使用JSON从对象数组创建属性数组

Creating an array of properties from an array of objects with JSON

本文关键字:数组 创建 属性 对象 JSON 使用      更新时间:2023-09-26
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"));

我怎么做才能从组中获得名称数组?

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

在c#中,与:group.ConvertAll<string>(m => m.Name)

相同

我认为你只需要循环遍历数组并以这种方式获取名称。

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例子

你也可以尝试一个独立的库,比如LINQ to JavaScript,它看起来非常有用。

我将提供一个明显的在所有浏览器中工作的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 shim以确保CC_4 Array方法在所有浏览器中可用:

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

您可以使用.map,但在较旧的浏览器中不可用。

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

在JavaScript 1.6及以上版本中:

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