映射值
通常需要根据现有数组的值生成新数组。
例如,要从字符串数组生成字符串长度数组:
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'
});