Javascript的新手:如何对数组中的特定数字求和

时间:2017-03-15 22:25:17

标签: javascript arrays console.log

请帮助,我一直在寻找答案太久了 我尝试使用push方法创建一个数组来插入数字
010到您刚刚在上面初始化的数字数组010的位置。

我这样做了:

var numbers = [];
for(var i = 0; i < 10; i++) { 
    numbers.push(i);
    console.log(numbers);

得到了这个结果,我认为这是正确的但不是100%肯定的:

[ 0 ]
[ 0, 1 ]
[ 0, 1, 2 ]
[ 0, 1, 2, 3 ]
[ 0, 1, 2, 3, 4 ]
[ 0, 1, 2, 3, 4, 5 ]
[ 0, 1, 2, 3, 4, 5, 6 ]
[ 0, 1, 2, 3, 4, 5, 6, 7 ]
[ 0, 1, 2, 3, 4, 5, 6, 7, 8 ]
[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
0

然后我将通过打印值的总和来测试数组推送方法 数组的位置36(使用console.log()函数打印到控制台)。 输出值应为9

我如此坚持这一点,无法在任何地方找到如何实现这一目标的样本。我认为它可能是这样的:

console.log(numbers(sum[3, 6]);

4 个答案:

答案 0 :(得分:0)

如果您想使用sum()函数,请尝试以下操作:

function sum(x, y) {
  return x + y;
}

console.log(sum(numbers[3], numbers[6]));

这是一个小提琴:https://jsfiddle.net/7181h1ok/

答案 1 :(得分:0)

要对数组的两个索引的值求和,可以按以下方式使用+加法运算符:

var numbers = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ];
var sum = numbers[3] + numbers[6]; //adds the value in index 3 of the numbers array to the value in index 6 of the numbers array.
console.log(sum); //prints the sum to the console.

请注意,如果您不熟悉JavaScript和/或其运算符,w3schools上的有用文档可以帮助您入门。

答案 2 :(得分:0)

首先,让我们将您的代码转换为更好的风格:

&#13;
&#13;
const numbers = [];
for (let i = 0; i < 10; i++) { 
    numbers.push(i);
    console.log(numbers);
}
&#13;
&#13;
&#13;

注意:我将numbers设为const而不是var,因为您不会更改它。我还i let绑定而不是var。通常,var是遗留的,永远不应该使用。如果可能,请使用const,否则请使用let

另外,我在for关键字后插入了一个空格。通常建议将包含控件结构关键字(ifwhilefor等)标题的括号与空格分开,以使其在视觉上与函数调用的参数列表的括号,没有空格。

其次:您的结果正确。 (提示:数字0到10有多少?)它应包括数字0到10,但它只包括0到9的数字。你有通常所说的 off-by-one-error 。在处理尝试手动管理循环索引时,这些错误非常常见。这是修复:

&#13;
&#13;
const numbers = [];
for (let i = 0; i <= 10; i++) { 
//                 ↑
    numbers.push(i);
    console.log(numbers);
}
&#13;
&#13;
&#13;

大多数现代编程语言都有比以更高级抽象形式(如迭代器,映射和折叠)手动处理循环索引更好的选择。不幸的是,ECMAScript没有Range数据类型,否则这可以简单地表示为将Range转换为Array

如果ECMAScript 具有Range数据类型,那么可能就像其中一个:

const numbers = Range(0, 10).toArray()
const numbers = Array.from(Range(0, 10))

以下是创建numbers Array的替代方法,该方法不涉及手动管理循环索引,但仍需要知道0到10是11个数字:

&#13;
&#13;
const numbers = Array.from({length: 11}, (_, i) => i)
&#13;
&#13;
&#13;

如果您想在索引3和6处添加数字,您可以简单地取消引用索引3和6并添加结果:

&#13;
&#13;
console.log(numbers[3] + numbers[6])
&#13;
&#13;
&#13;

在评论中,您询问如何将Array中的所有数字相加。使用二元运算符组合集合的元素称为foldreduceECMAScript supports it out-of-the-box

&#13;
&#13;
console.log(numbers.reduce((acc, el) => acc + el));
&#13;
&#13;
&#13;

注意没有显式循环,因此没有显式的循环索引管理。在这里完全不可能出现一个错误。

答案 3 :(得分:-1)

它将是:console.log((+numbers[3]) + (+numbers[6]));

通常,它应该是console.log(numbers[3] + numbers[6]);,但有时会出现导致36而不是9的问题。额外的+符号告诉javascript它是一个数字。

注意:请记住,第一个数字是numbers[0]。数组以0开始!