2011-10-03 146 views
3
function Person(name, favouriteColour) { 
    this.Name = name; 
    this.FavouriteColour = favouriteColour; 
} 

var group = []; 

group.push(new Person("Bob", "Green")); 
group.push(new Person("Jane", "Red")); 
group.push(new Person("Jack", "Blue")); 

我該如何從組中獲取名稱數組?使用JSON從對象數組創建屬性數組

group.??? -> ["Bob", "Jane", "Jack"] 

在C#中,同爲:group.ConvertAll<string>(m => m.Name)

+0

你使用jQuery或別的什麼嗎? –

回答

2

我會提供明顯的直的JavaScript在所有瀏覽器的工作原理:

var names = []; 
for (var i = 0; i < group.length; i++) { 
    names.push(group[i].Name); 
} 

或用jQuery(使用它的實用方法.map):

var names = $.map(group, function(item) {return(item.Name);}); 

或者,如果您安裝了.map墊片,以確保.map陣列方法適用於所有的瀏覽器:

var names = group.map(function(item) {return(item.Name);}); 
+0

謝謝你,你不是第一個有這些答案的人,但你提供了最強大的選擇。我使用jQuery的地圖方法。非常好! – Levitikon

3

我想你會只需要循環陣列之上,並獲得名字的方式。

function getKeysArray(key, objArray) { 
    var result = [], l = objArray.length; 
    for (var i = 0; i < l; i++) { 
     result.push(objArray[i][key]); 
    } 
    return result; 
} 

alert(getKeysArray("Name", group)); 

JSFiddle Example

您也可以嘗試像LINQ to JavaScript看起來非常有用一個單獨的圖書館。

+0

Linq to Javascript的文件大小是多少? –

+0

我不知道,我從來沒有使用它,但看到它在這裏推薦。剛剛下載它,它是6.9kb。 –

2

您可以使用.map,但它在舊版瀏覽器中不可用。

// names is group's Name properties 
var names = group.map(function(value) { return value.Name; }); 
1

在JavaScript 1.6和更高版本:

group.map(function(p) { return p.Name; });