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"]