繁体   English   中英

javascript-如何将json数组展平为特定json属性的数组?

[英]javascript - how do i flatten an array of json into an array of a particular json attributes?

所以说我有一个像这样的数组

[ 
    {name: "a", happyName: "bob" }
    , {name: "b", happyName: "cow" }
    , {name: "c", happyName: "moo" }
    , {name: "d", happyName: "jen" }
]

将其展平为数组的最有效方法是:

[ "a","b","c","d"]

(或替代地,仅获取值中的happyName-确切地说,我想我如何将某个给定数组展平为某个给定命名json属性的数组?)

注意,这仅是javascript,请不要使用JQuery等。

这是map()好用例:

var names = theArray.map(function(item) {
    return item.name;
});

var happyNames = theArray.map(function(item) {
    return item.happyName;
});

如果您需要做很多事情,创建一个助手很容易:

var names = values(theArray, 'name'),
    happyNames = values(theArray, 'happyName');

function values(arr, attr) {
    return arr.map(function(item) {
        return item[attr];
    });
}

您可以使用Array.map

var names = arr.map(function(obj) {
    return obj.name;
});

小提琴

var arr = [ 
 {name: "a", happyName: "bob" }
 , {name: "b", happyName: "cow" }
 , {name: "c", happyName: "moo" }
 , {name: "d", happyName: "jen" }
]

var names = arr.map(function(e) { return e.name } )

.map()是一种很酷的方法,但是请记住,它与旧版IE(<9)不兼容。 如果您想要在任何地方都能使用的东西,请执行以下操作:

var arrayOfObjects = [ 
    {name: "a", happyName: "bob" },
    {name: "b", happyName: "cow" },
    {name: "c", happyName: "moo" },
    {name: "d", happyName: "jen" }
],
array = [],
i = 0,
len = arrayOfObjects.length;

for(;i<len;i++) {
    array.push(arrayOfObjects[i].name);
}

// output => [ "a","b","c","d"]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM