gpt4 book ai didi

javascript - 将嵌套的对象数组展平到数组字段上

转载 作者:行者123 更新时间:2023-12-02 14:03:11 26 4
gpt4 key购买 nike

有一个对象a1 =

[{name:'x',age:21, addr:[{flat:1,add:'xyz'},{flat:2,add:'xsr'}]},
{name:'y',age:22, addr:[{flat:3,add:'xyz1'},{flat:4,add:'xsr1'}]]

期望的输出:

[{name:'x',age:21, addr:{flat:1,add:'xyz'}},
{name:'x',age:21, addr:{flat:2,add:'xsr'}},
{name:'y',age:22, addr:{flat:3,add:'xyz1'},
{name:'y',age:22, addr:{flat:4,add:'xsr1'}]

求推荐!我正在尝试使用 lodash/underscore 来完成此任务。

最佳答案

将原始数组中的每个项目映射到一个新数组,其中项目的数量根据 addr 字段的数量。使用 concat 将所有内容展平到一个新数组。

您可以使用 Object.assign() 创建新项目如果您使用 babel 或类似工具转译为 ES5,因为 IE 不支持它。但是,由于您使用的是 Angular ,因此可以使用 angular.extend相反。

ES5:

var arr = [
{name:'x',age:21, addr:[{flat:1,add:'xyz'},{flat:2,add:'xsr'}]},
{name:'y',age:22, addr:[{flat:3,add:'xyz1'},{flat:4,add:'xsr1'}]}
];

var result = [].concat.apply([], arr.map(function(item) {
return item.addr.map(function(addr) {
return angular.extend({}, item, { addr: addr });
});
}));

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.min.js"></script>

ES6:

const arr = [
{name:'x',age:21, addr:[{flat:1,add:'xyz'},{flat:2,add:'xsr'}]},
{name:'y',age:22, addr:[{flat:3,add:'xyz1'},{flat:4,add:'xsr1'}]}
];

const result = [].concat(...arr.map((item) => item.addr.map((addr) => Object.assign({}, item, { addr }))));

console.log(result);

关于javascript - 将嵌套的对象数组展平到数组字段上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40250107/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com