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

时间:2015-10-13 19:52:31

标签: javascript

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

示例输入==>输出:

[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>

3 个答案:

答案 0 :(得分:2)

这是得到输出的内容

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>

答案 1 :(得分:0)

您必须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(', '));

工作example

答案 2 :(得分:0)

有几点可以查看您的代码。

sequence是一个数组,但您没有定义类型,甚至没有解析输入。据我所知,这是一个String数组。

  

Documentation states: split()方法通过将字符串分隔为子字符串将String对象拆分为字符串数组。

然后,您的阵列在处理时会不断变化。虽然这不是错误,但它很奇怪&#34;对于手头的任务,以及你对语言的明显支配。

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);
}