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

Javascript 在数组上传递给.map()迭代器函数的是什么?,javascript,arrays,map-function,Javascript,Arrays,Map Function,我有一个函数,它接受一个对象数组和一个表示属性的字符串。函数应该从每个对象返回一个包含该属性的数组 以下是我的示例代码: function pluck(array, property) { var newArr = []; array.map(function(paints){ return newArr.push(paints[property]); }); return newArr; } 这将返回一个新数组,并且它可以工作。但是,当函数将一

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

以下是我的示例代码:

function pluck(array, property) {
    var newArr = [];
    array.map(function(paints){
       return newArr.push(paints[property]); 
    });
    return newArr;
}
这将返回一个新数组,并且它可以工作。但是,当函数将一个对象数组作为参数之一时……在map方法中传递给匿名迭代器函数的是什么?钥匙的价值是什么


它将如何使用map方法迭代对象数组

关于您的问题的注释解释了您的代码中发生了什么

在数组上调用map时,mapping函数提供了3个参数,它们总是按顺序使用,有时使用,很少使用

const result = items.map(function(element, index, items) {
    // do the mapping
});
依次为原始数组项的每个元素调用函数,并将函数的结果放置在结果数组的相同索引位置

函数参数为:

元素-这是数组中的当前元素 索引-当前索引 items-调用映射的原始数组 您的弹拨功能可以写成:

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

这里没有正确使用Map函数。Map实际上会为您创建一个新数组,因此您不需要newArr和push。你把地图当作一张地图,而事实并非如此。映射中的lambda按顺序传递数组中的每个元素。结果是一个数组,其中包含lambda在每次调用中返回的元素。-值、索引、数组=>index@pvg知道了。我理解我是如何错误地使用它的。但是如果数组中的元素本身是一个对象,那么传递给迭代函数的是什么。例如,如果我是一个像[1,2,3]这样的数组,它将是元素,但是如果它是[{color:'blue'}],该怎么办?“blue”是然后传递给迭代器函数参数的吗?不,它只是{}定义的对象。它始终是数组的元素,新数组的元素是您返回的任何内容。就是这样。请在这里解释一下答案,否则这将是一个不完整的答案