2011-10-03 77 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; });