新手为Javascript:如何总结数组中的具体数字
请帮助,我一直在寻找一个答案太长。
我试图创建一个使用push方法到数字0
插入到10
到通过你刚才上面初始化的数字阵列的10
位置0
的数组。新手为Javascript:如何总结数组中的具体数字
我这样做:
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
然后我通过打印来测试数组push方法数组总和 位置3
和6
(使用console.log()
函数打印到控制台)。 输出的值应该是9
。
我很困扰这一点,无法找到任何地方如何做到这一点的示例。我想这可能是这样的:
console.log(numbers(sum[3, 6]);
这将是:console.log((+numbers[3]) + (+numbers[6]));
通常情况下,它应该是console.log(numbers[3] + numbers[6]);
但有时有导致36,而不是9中的问题,额外的+号告诉JavaScript代码它是一个数字。
注意:请记住第一个数字是numbers[0]
。数组以0开头!
非常感谢!我的结果是现在:[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因此,它看起来像它的工作? –
如果你想有一个sum()函数,那么请尝试以下操作:
function sum(x, y) {
return x + y;
}
console.log(sum(numbers[3], numbers[6]));
这里有一个小提琴:https://jsfiddle.net/7181h1ok/
综上所述阵列的两个指数的值,可以使用用以下方式+
加法运算符:
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,可以让你开始。
是的,我在w3shcols网站上。在很多网站上真的看过,无法找到我想要完成的一个样本。该命令如何改变以对数组中的所有数字求和? –
@AjaLee一个函数来汇总所有的数组的内容将创建一个变量(例如,'out')为0的值,则通过阵列迭代,将每个元件与先前创建的变量,并最后返回那个变量。 它看起来像这样: 'function sumArray(numArray){var out = 0; for(var i = 0; i
首先,让我们的代码转换为一个稍微好一点的风格:
const numbers = [];
for (let i = 0; i < 10; i++) {
numbers.push(i);
console.log(numbers);
}
注:我做了numbers
一个const
代替var
,因为你不改变它。我还制作了i
a let
而不是var
。一般来说,var
是遗留的,不应该被使用。如有可能,请使用const
,否则请使用let
。
另外,我在for
关键字后插入了空格。通常建议使用空格将括起来的括号括起来,使其与控件结构关键字(if
,while
, for
等)的标题分隔开,以使其与函数调用的参数列表的括号在视觉上不同没有空间。
其次:您的结果是而不是正确。 (提示:0到10的数字有多少个数字?)它应该包含数字0到10,但它只包含0到9的数字。通常有一个称为的错误。处理试图手动管理循环索引时,这些错误非常普遍。这是修复:
const numbers = [];
for (let i = 0; i <= 10; i++) {
// ↑
numbers.push(i);
console.log(numbers);
}
大多数现代编程语言都有比在更高层次的抽象,如迭代器,地图形式手动循环指数打交道更好的替代品,和褶皱。不幸的是,ECMAScript没有Range
数据类型,否则这可以简单地表示为将Range
转换为Array
。
如果ECMAScript的确实有Range
数据类型,它可以为例如像其中的一个:
const numbers = Range(0, 10).toArray()
const numbers = Array.from(Range(0, 10))
下面是创建numbers
Array
的替代方案,不涉及手动管理循环指数,但仍需要知道0到10是11个数字:
const numbers = Array.from({length: 11}, (_, i) => i)
如果你想在指数3和6加数字,你可以简单地取消引用索引3和6,并添加结果:
console.log(numbers[3] + numbers[6])
在评论,你问道如何将Array
中的所有数字相加。结合使用二进制运算符集合的元素被称为fold
或reduce
,并ECMAScript supports it out-of-the-box:
console.log(numbers.reduce((acc, el) => acc + el));
注意怎么没有明确的循环,循环指数因此没有明确的管理。在这里做一个错误的错误是根本不可能的。
只需在位置'3'和'6'上添加元素:)'console.log(数字[3] +数字[6])''。 –