我有一个包含多个对象的数组。在该数组中,每个对象具有两个或更多个子对象。我想将所有子对象聚合成一个数据数组。如何使用javascript?
var array1 = [
{
"dfgasg24":{
name:"a",
id:1
},
"dfgare24":{
name:"b",
id:2
}
},
{
"wegasg24":{
name:"ab",
id:76
},
"yugasg24":{
name:"bc",
id:34
},
"yugasg26":{
name:"dc",
id:45
}
}
]
我想要的输出,
var result = [
{
name:"a",
id:1
},
{
name:"b",
id:2
},
{
name:"ab",
id:76
},
{
name:"bc",
id:34
},
{
name:"dc",
id:45
}
];
答案 0 :(得分:7)
您可以使用组合方法迭代数组和关键字来构建平面数组。
var array = [{ "dfgasg24": { name: "a", id: 1 }, "dfgare24": { name: "b", id: 2 } }, { "wegasg24": { name: "ab", id: 76 }, "yugasg24": { name: "bc", id: 34 }, "yugasg26": { name: "dc", id: 45 } }],
result = array.reduce(function (r, o) {
Object.keys(o).forEach(function (k) {
r.push(o[k]);
});
return r;
}, []);
console.log(result);

.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 1 :(得分:3)
使用git revert HEAD~2
获取对象值
_.values
答案 2 :(得分:2)
此解决方案使用spread syntax,arrow functions(ES6)和Object.values()
(ECMAScript 2017),因此如果不进行转换,它将无法在旧浏览器上运行:
const array = [{ "dfgasg24": { name: "a", id: 1 }, "dfgare24": { name: "b", id: 2 } }, { "wegasg24": { name: "ab", id: 76 }, "yugasg24": { name: "bc", id: 34 }, "yugasg26": { name: "dc", id: 45 } }];
const result = [].concat(...array.map(Object.values));
console.log(result);
如果所有对象的键都是唯一的,您还可以使用Object.assign()
将所有对象组合到一个对象中,然后使用Object.values()
将值提取到数组中:
const array = [{ "dfgasg24": { name: "a", id: 1 }, "dfgare24": { name: "b", id: 2 } }, { "wegasg24": { name: "ab", id: 76 }, "yugasg24": { name: "bc", id: 34 }, "yugasg26": { name: "dc", id: 45 } }];
const result = Object.values(Object.assign({}, ...array));
console.log(result);
答案 3 :(得分:0)
answer=[];
for(elem of array){
var arr=[];
for(obj of elem){
arr.push(obj);
}
answer.push(arr);
}
alert(answer);
循环通过主阵列,并用数组替换每个元素。