该算法应该对数组的两个元素求和,并将它们插入总和中使用的两个元素之间。
示例输入==>输出:
[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>
答案 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);
}