2014-07-08 40 views
0

只是陷入困境,並不確定爲什麼我的代碼無法正常工作。這些指令用於獲取一組對象和一個屬性名稱,並返回一個包含每個對象的命名屬性的數組。 所以像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

順便說一句,使用'爲(VAR i'而不是'爲(i = 0'。現在你的'i' var爲全球! – hugomg

+0

真棒的感謝! – user3813774

回答

4

你忘了添加一個return語句,而你沒有引用對象屬性。見下文。

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

如果你想要一個更「功能性」的解決方案,你可以使用地圖。

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

爲什麼語法.push(OBJ文件[我] [name]); – user3813774

+0

'objs [i]'表示對象在索引'i'處,'objs [i] [name]'表示對象在索引'i'的對象屬性'name'。通過它們的字符串名稱使用方括號表示法來訪問屬性[這可能有助於解釋它。](http://stackoverflow.com/questions/22671770/combine-a-variable-with-variable-value-in-javascript/22671818 #22671818) – Pete

+0

我剛纔說錯了嗎?我認爲訪問對象屬性的語法是'name person.lastName'或'name = person [「lastName」]'。但是,如果我以這種方式思考你的寫道,它不會像[a]一樣嗎? – user3813774

相關問題