通过逗号将字符串分割成数字,然后打印,最终会跳过1个y值

Splitting string into numbers by commas and then printing ends up skipping 1 y-value

本文关键字:1个 打印 然后 字符串 分割 数字      更新时间:2023-09-26

这段代码将x和y作为输入,用逗号分隔字符串,将它们转换为整数,然后打印出字符串。

<body>
    x: <input id="xv"> <br/>
    y: <input id="yv">
    <br/>
    <div id="results">
    <button onclick="action()">Go</button>
    </div>
    <script>
        // javascript
        var action = function(){
            // separate by commas and place into array
            var xvs = document.getElementById("xv").value.split(",");
            var yvs = document.getElementById("yv").value.split(",");
            // convert to an integer
            for(var i=0, j=xvs.length; i<j; i++){
                xvs[i] = parseInt(xvs[i]);
                yvs[i] = parseInt(yvs[i]);
            }
            // print out results
            document.getElementById("results").innerHTML = xvs + "<br/>" + yvs;
        }
    </script>
</body>

您希望它打印出与输入相同的副本。但是,我得到的结果是:

Input:
62,64,64,65,65,65,65,66,66,66,66,66,66,66,67,67,67,68,69,69 
62,63,63,64,66,65,64,67,67,63,64,68,65,66,66,65,68,68.69,70 
Output:
62,64,64,65,65,65,65,66,66,66,66,66,66,66,67,67,67,68,69,69
62,63,63,64,66,65,64,67,67,63,64,68,65,66,66,65,68,68,70,NaN

有人知道这里发生了什么吗?

这是一个jsfiddle链接:https://jsfiddle.net/zs65x2e3/

请注意,如果不将其放入单独的<script>标记中,代码将不起作用,因为action()被认为是undefined

输入错误,

:

62,64,64,65,65,65,65,66,66,66,66,66,66,66,67,67,67,68,69,69 
62,63,63,64,66,65,64,67,67,63,64,68,65,66,66,65,68,68.69,70 
固定:

62,64,64,65,65,65,65,66,66,66,66,66,66,66,67,67,67,68,69,69 
62,63,63,64,66,65,64,67,67,63,64,68,65,66,66,65,68,68,69,70 

你用的是句号而不是逗号

错误不是因为句号。循环有一个问题。根据输入x的长度运行循环。如果y的输入比x的输入少那么剩下的y的迭代就会得到NaN。在你的样本输入中,周期导致输入的长度小于1,因此最后你得到1个NaN。