javascript - 数组上的 .map() 迭代器函数传递了什么?

标签 javascript arrays map-function

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

这是我的示例代码:

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

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

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

最佳答案

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

当您在数组上调用 map 时,映射函数会提供 3 个参数,这三个参数按始终、有时和很少的顺序使用。

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

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

函数参数是:

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

你的 pluck 函数可以写成:

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

关于javascript - 数组上的 .map() 迭代器函数传递了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42989125/

相关文章:

Javascript:使用扩展运算符合并两个对象

javascript - JS中数组元素的随机子集

javascript - 如何使用\作为分隔符

list - 将map与具有多个参数的函数一起使用

Javascript High Charts 更改 Rec Rill 悬停颜色

javascript - 如何将 jQuery 传递给评估代码?

javascript - 如何使用javascript从数组中绘制折线图

javascript - map 函数返回 1 个 bool 值,而不是一个 bool 值数组

javascript - es6 的映射函数中的条件语句

javascript - 将 jQuery 的 .on ('mouseenter' ) 重写为纯 JS 变体