只是感到困惑,不知道为什么我的代码不起作用。指令是获取对象数组和属性名称,并返回包含每个对象的命名属性的数组。
所以类似于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
,但我想在我首先解决这个问题之后我会做到这一点。
答案 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);
});
};