我的功能不是打印任何东西

My function is not printing anything

本文关键字:任何东 打印 功能 我的      更新时间:2023-09-26

算法应该对数组中的两个元素求和,并将它们插入和中的两个元素之间。

示例输入==>输出:

[1, 2, 3, 4] ==> [ 1, 3, 2, 5, 3, 7, 4]    

function growArray() {
    var sequence = [];
    sequence = window.prompt("Enter a number sequence", "1 2 3 4");
    for (var i = 0; i < sequence.length - 1; i += 2) {
        if (!((i + 1) in sequence)) {
            return;
        } // prevent out of bounds access
        var new_value = sequence[i] + sequence[i + 1];
        sequence.splice(i + 1, 0, new_value); // insert value at i + 1
    }
    for (var v in sequence) {
        document.write(v + ", ");
    }
}
<p>
    <input id="f1" type="button" value="Function 1" onclick="growArray();" />Click to expand array
</p>

下面是得到的输出

function growArray() {
    var input = window.prompt("Enter a number sequence", "1 2 3 4");
    var sequence = input.split(" ");
    for (var i = 0; i < sequence.length - 1; i += 2) {
        if (i + 1 > sequence.length) {
            return;
        } // prevent out of bounds access
        var new_value = parseInt(sequence[i]) + parseInt(sequence[i + 1]);
        sequence.splice(i + 1, 0, new_value); // insert value at i + 1
    }
    document.write(sequence.toString());
}
<p>
    <input id="f1" type="button" value="Function 1" onclick="growArray();" />Click to expand array
</p>

检查代码有几点需要注意。

sequence是一个数组,但是您没有定义类型,甚至没有解析输入。在我看来,它是一个字符串数组。

文档说明:split()方法通过将字符串分成子字符串将String对象分成字符串数组。

然后,你的数组在你处理它的过程中不断被改变。虽然这不是错误,但对于手头的任务和你对语言的明显统治来说,这是"奇怪的"。

example(){
   var original = [1, 2, 3, 4];
   var result=[];
   for(var i=0;i<original.length;i++){
      result.push(original[i]);
      if(i<original.length-1){
         result.push(original[i]+original[i+1]);
      }
   }
   alert(result);
}

您必须将用户输入split到数组(序列)中。

这个数组包含字符串值,因为用户输入是字符串。所以你必须把这些值映射到int中,才能把它们相加。

var sequence = '1 2 3 4'.split(' ').map(Number);
for(var i=0; i<sequence.length - 1; i+=2) {
    sequence.splice(i+1, 0, sequence[i] + sequence[i+1]);
}
document.write(sequence.join(', '));
工作示例