通过对象数组进行映射并动态访问其属性(使用变量)

时间:2017-05-17 15:28:44

标签: javascript arrays object javascript-objects

我有一个内部有不同对象的数组。我想写一个函数pluck,它接受​​数组&一个属性,并返回不同对象中该属性的所有值的数组。

我试过这个:

var paints = [
    {color: 'red'},
    {color: 'yellow'},
    {color: 'blue'},
];

function pluck(arr, property) {
    return arr.map(function(obj, property) {
        return obj[property];
    });

}
console.log(pluck(paints, 'color'));

这不起作用。

如果我改变这样的功能:

function pluck(arr) {
    return arr.map(function(obj) {
        return obj['color'];
    });

......它有效,但现在显然是硬编码的。但是,我想调用该函数并指定我想要在数组中返回的属性。

1 个答案:

答案 0 :(得分:1)

非常接近。

function pluck(arr, property) {
    return arr.map(function(obj) {
        return obj[property];
    });
}

你不需要内部函数中的property参数,并通过它让你重新定义了你传入的那个参数。

var paints = [
    {color: 'red'},
    {color: 'yellow'},
    {color: 'blue'},
];

function pluck(arr, property) {
    return arr.map(function(obj) {
        return obj[property];
    });

}
console.log(pluck(paints, 'color'));