什么被传递给数组上的 .map() 迭代器函数?

What gets passed to the .map() iterator function on an array?

我有一个函数,它接受一个对象数组和一个字符串,它代表一个 属性。该函数应该 return 一个包含每个对象的 属性 的数组。

这是我的示例代码:

function pluck(array, property) {
    var newArr = [];
    array.map(function(paints){
       return newArr.push(paints[property]); 
    });
    return newArr;
}

这 return 是一个新数组,它可以工作。但是当函数接受一个对象数组作为参数之一时……在 map 方法中传递给匿名迭代器函数的是什么?密钥的值?

如何使用 map 方法遍历对象数组?

对您问题的评论解释了您的代码中发生的事情。

当您在数组上调用 map 时,映射函数提供了 3 个参数,它们按总是、有时和很少的顺序使用。

const result = items.map(function(element, index, items) {
    // do the mapping
});

对原数组items的每个元素依次调用函数,函数的结果放在result数组的相同索引位置。

函数参数是:

  • element - 这是数组中的当前元素
  • index - 当前索引
  • items - 调用地图的原始数组

你的 pluck 函数可以写成:

function pluck(arr, prop) {
    return arr.map(item => item[prop]);
}