映射值

通常需要根据现有数组的值生成新数组。

例如,要从字符串数组生成字符串长度数组:

Version >= 5.1

['one', 'two', 'three', 'four'].map(function(value, index, arr) {
  return value.length;
});
// → [3, 3, 5, 4]

Version >= 6

['one', 'two', 'three', 'four'].map(value => value.length);
// → [3, 3, 5, 4]

在此示例中,为 map() 函数提供了一个匿名函数,map 函数将为数组中的每个元素调用它,按以下顺序提供以下参数:

  • 元素本身
  • 元素的索引(0,1 …)
  • 整个阵列

另外,map() 提供可选的第二个参数,以便在映射函数中设置 this 的值。根据执行环境,this 的默认值可能会有所不同:

在浏览器中,this 的默认值始终为 window

['one', 'two'].map(function(value, index, arr) {
  console.log(this); // window (the default value in browsers)
  return value.length;
});

你可以将其更改为任何自定义对象,如下所示:

['one', 'two'].map(function(value, index, arr) {
  console.log(this); // Object { documentation: "randomObject" }
  return value.length;
}, {
  documentation: 'randomObject'
});