JavaScript的阵列地图原型是否有点脱落?

时间:2016-07-09 21:28:22

标签: javascript node.js

我正在使用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 ]*/

这只是一个奇怪的问题,更多的是为什么第一段代码似乎。

3 个答案:

答案 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

结果是正确的。

我认为您将mapreduce混淆:

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]