2017-03-15 32 views
1

请帮助,我一直在寻找一个答案太长。
我试图创建一个使用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方法数组总和 位置36(使用console.log()函数打印到控制台)。 输出的值应该是9

我很困扰这一点,无法找到任何地方如何做到这一点的示例。我想这可能是这样的:

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

只需在位置'3'和'6'上添加元素:)'console.log(数字[3] +数字[6])''。 –

回答

-1

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

通常情况下,它应该是console.log(numbers[3] + numbers[6]);但有时有导致36,而不是9中的问题,额外的+号告诉JavaScript代码它是一个数字。

注意:请记住第一个数字是numbers[0]。数组以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因此,它看起来像它的工作? –

0

如果你想有一个sum()函数,那么请尝试以下操作:

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

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

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

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,可以让你开始。

+0

是的,我在w3shcols网站上。在很多网站上真的看过,无法找到我想要完成的一个样本。该命令如何改变以对数组中的所有数字求和? –

+0

@AjaLee一个函数来汇总所有的数组的内容将创建一个变量(例如,'out')为0的值,则通过阵列迭代,将每个元件与先前创建的变量,并最后返回那个变量。 它看起来像这样: 'function sumArray(numArray){var out = 0; for(var i = 0; i GameGibu

0

首先,让我们的代码转换为一个稍微好一点的风格:

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

下面是创建numbersArray的替代方案,不涉及手动管理循环指数,但仍需要知道0到10是11个数字:

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

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

console.log(numbers[3] + numbers[6])

在评论,你问道如何将Array中的所有数字相加。结合使用二进制运算符集合的元素被称为foldreduce,并ECMAScript supports it out-of-the-box

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

注意怎么没有明确的循环,循环指数因此没有明确的管理。在这里做一个错误的错误是根本不可能的。