我正在使用JavaScript的阵列原型图,我不明白为什么我会得到以下值:
<span class="comments">%s Comments</span>
上面的代码不应该返回[1,3,4,7,11]吗?
这是另一个片段,显示数组中的元素是按顺序添加的,并且至少我相信是正确的。
console.log(
[1,2,2,5,6].map(function(a,b){
return a+b;
})
); /*This returns [ 1, 3, 4, 8, 10 ]*/
这只是一个奇怪的问题,更多的是为什么第一段代码似乎。
答案 0 :(得分:5)
这是因为map将值作为第一个参数传递给你,将索引作为第二个参数传递给你。所以,你要添加的是:1 + 0,2 + 1,2 + 2,5 + 3等。
您的a
值是数组中的值:1,2,2,5,6
您的b
值实际上是一个索引,而不是数组中的值:0,1,2,3,4
答案 1 :(得分:4)
总结:
[1, 2, 2, 5, 6] // Your values
+ [0, 1, 2, 3, 4] // Indices
-----------------
[1, 3, 4, 8,10] // Result
[1, 2, 3, 4, 5, 6] // Your values
+ [0, 1, 2, 3, 4, 5] // Indices
--------------------
[1, 3, 5, 7, 9,11] // Result
结果是正确的。
我认为您将map
与reduce
混淆:
var arr = [];
[1,2,2,5,6].reduce(function(a,b){
arr.push(a+b);
return b;
}, 0);
arr; // [1, 3, 4, 7, 11]
[0, 1, 2, 2, 5] // Values returned in previous iteration
+ [1, 2, 2, 5, 6] // Your values
-----------------
[1, 3, 4, 7,11] // Result
答案 2 :(得分:1)
所以第一个参数'a'是value
而'b'是index
。所以加在一起它只显示核心价值。所以'a'包含[1, 2, 2, 5, 6]
,'b'包含[0, 1, 2, 3, 4]