2014-05-16 58 views
0

這可能是一個相當容易的問題,但我還沒有遇到過優雅的解決方案。Javascript:按特定字段獲取所有對象

如何從單個字段獲取數組中的所有對象。例如;

 

var users = [{name:'John', age: 20}, 
{name:'Sarah', age: 21}, 
{name:'George', age:34}]; 
var names = magicFunction(users, 'name'); 
// names = ['John', 'Sarah', 'George']; 
// Another challenge is not to get field name (in this case 'name') with the value 
 

我不知道,如果你能與像過濾地圖功能做到這一點,而無需編寫一個長期的功能?

回答

1

Underscore.js(您可以將其安裝爲節點包)具有一個名爲_.pluck的功能,它可以完成此操作。如果你_ = require("underscore")你實際上可以用_.pluck代替magicFunction

1

是的,這是很簡單的:

var prop = 'name'; 
var names = users.map(function(x) { return x[prop]; }); 

或者,如果你想編寫成函數如下:

function getProp(arr, prop) 
{ 
    return arr.map(function(x) { return x[prop]; }); 
} 

var names = getProp(users, 'name'); 
0

@pswg可能是你正在尋找的解決方案,但我'd想展示另一個:使用core.operators

var names = users.map(opts.get('name')); 
相關問題