如何在javascript中将嵌套对象转换为数组?
我有一个包含多个对象的数组。 在该数组中,每个对象具有两个或更多个子对象。 我想将所有子对象聚合成一个数据数组。 如何使用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 } ];
您可以使用组合方法迭代数组并通过键来构建平面数组。
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; }
使用_.values
获取对象值
var res = _.flatMap(array1, _.values)
此解决方案使用扩展语法 , 箭头函数 (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);
answer=[]; for(elem of array){ var arr=[]; for(obj of elem){ arr.push(obj); } answer.push(arr); } alert(answer);
循环通过主arrays,并用数组替换每个元素。