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”是然后传递给迭代器函数参数的吗?不,它只是{}定义的对象。它始终是数组的元素,新数组的元素是您返回的任何内容。就是这样。请在这里解释一下答案,否则这将是一个不完整的答案