返回包含每个对象的命名属性的数组

时间:2014-07-08 00:51:32

标签: javascript arrays

只是感到困惑,不知道为什么我的代码不起作用。指令是获取对象数组和属性名称,并返回包含每个对象的命名属性的数组。 所以类似于pluck([{a:1}, {a:2}], 'a') // -> [1,2],其中pluck是我想要创建的函数。

到目前为止,我有:

function pluck(objs, name) {
  var pushedArray=[];
  for (i=0;i<objs.length;i++){
    var totalpushedArray = pushedArray.push(name[i]);
  }
}

但据我所知,代码本身并不起作用。如果对象没有属性,还有其他指导方针可以离开undefined,但我想在我首先解决这个问题之后我会做到这一点。

1 个答案:

答案 0 :(得分:4)

您忘记添加return语句,而您没有引用object属性。见下文。

function pluck(objs, name) {
    var pushedArray = [];
    for (var i = 0; i < objs.length; i++) {
        pushedArray.push(objs[i][name]);
    }
    return pushedArray;
};

如果您想要更“实用”的解决方案,可以使用map。

function pluck(objs, name) {
    return objs.map(function(obj) {
        return (obj.hasOwnProperty(name) ? obj[name] : null);
    });
};