只是感到困惑而不确定为什么我的代码无法正常工作。这些指令将获取一个对象数组和一个属性名称,并返回一个包含每个对象的命名属性的数组。
所以像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,但是我认为在我先解决此问题后,我会去做。

最佳答案

您忘记添加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);
    });
};

10-06 00:38