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

javascript—如何将json数组展平为特定json属性数组?,javascript,Javascript,假设我有一个这样的数组 [ {name: "a", happyName: "bob" } , {name: "b", happyName: "cow" } , {name: "c", happyName: "moo" } , {name: "d", happyName: "jen" } ] 将其展平为这样的阵列最有效的方式是什么: [ "a","b","c","d"] (或者只获取值中的happyName——确切地说,我想,我该如何将某个给定数组展平为某个给

假设我有一个这样的数组

[ 
    {name: "a", happyName: "bob" }
    , {name: "b", happyName: "cow" }
    , {name: "c", happyName: "moo" }
    , {name: "d", happyName: "jen" }
]
将其展平为这样的阵列最有效的方式是什么:

[ "a","b","c","d"]
(或者只获取值中的happyName——确切地说,我想,我该如何将某个给定数组展平为某个给定命名json属性的数组?)


NB这只是javascript,请不要使用JQuery等内容

这是一个很好的用例:

如果您必须经常这样做,那么创建一个帮助器非常容易:

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

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

这是一个很好的用例:

如果您必须经常这样做,那么创建一个帮助器非常容易:

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

function values(arr, attr) {
    return arr.map(function(item) {
        return item[attr];
    });
}
你可以用它

您可以使用

.map()
是一种很酷的方法,但请记住它与传统IE不兼容(
.map()
是一种很酷的方法,但请记住它与传统IE不兼容(
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 } )
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"]