【问题标题】:JavaScript Array#map: index argumentJavaScript Array#map:索引参数
【发布时间】:2014-12-09 20:28:51
【问题描述】:

我的问题是关于 JavaScript 中数组的 map 方法。

您可以将一个函数传递给它,该函数接受第二个参数,即正在处理的数组的当前元素的索引,但是......有什么目的?这样做会发生什么,不这样做有什么区别?

你会用这个功能做什么?

【问题讨论】:

  • 你的地图是指javascript对象吗?介意举个例子吗?

标签: javascript methods map


【解决方案1】:

当前项的索引总是传递给回调函数,如果你不在函数中声明它的唯一区别是你不能通过名称访问它。

例子:

[1,2,3].map(function(o, i){
    console.log(i);
    return 0;
});

[1,2,3].map(function(o){
    console.log(arguments[1]); // it's still there
    return 0;
});

输出:

0
1
2
0
1
2

演示:http://jsfiddle.net/Guffa/k4x5vfzj/

【讨论】:

    【解决方案2】:

    有时元素的索引很重要。例如,这张地图每隔一个元素就用 0 替换:

    var a = [1, 2, 3, 4, 5, 6];
    var b = a.map(function(el, index) {
        return index % 2 ? 0 : el;
    });
    console.log(b);
    

    输出:

    [1, 0, 3, 0, 5, 0]
    

    【讨论】:

      【解决方案3】:

      这里是map函数的描述:

      arr.map(callback[, thisArg])
      

      callback
      产生新数组元素的函数,接受三个参数:

      currentValue
      数组中正在处理的当前元素。

      index
      数组中正在处理的当前元素的索引。

      array
      调用了数组映射。

      map 函数将回调函数作为参数(而不是索引作为参数,正如在编辑之前的问题中最初所述)。回调函数有一个索引作为参数 - 回调是自动调用的,因此您无需自己提供索引。如果只需要当前值,可以省略其他参数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-27
        • 1970-01-01
        • 1970-01-01
        • 2013-04-01
        • 2011-07-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多