请教一个数组合并的问题

2019-06-26 10:30:49 +08:00
 Colorful

请教一个数组的问题

有两个数组,合并成一个数组

数组一:[{id:"150",name:"李三"},{id:"151",name:"李三 1"},{id:"152",name:"李三 2"},{id:"153",name:"李三 3"}]

数组二:[{"sname":"一级","otor":["李三 1","150"]},{"sname":"一级 2","otor":["李三 2"]},,{"sname":"一级 3","otor":["153"]},]

最后合并成数组:[{"sname":"一级","otor":[{id:"151",name:"李三 1"},{id:"150",name:"李三"}]},{"sname":"一级 2","otor":[{id:"152",name:"李三 2"}]},,{"sname":"一级 3","otor":[{id:"153",name:"李三 3"}]},]

1490 次点击
所在节点    程序员
7 条回复
zantop
2019-06-26 11:32:36 +08:00
const arr1 = [
{ id: '150', name: '李三' },
{ id: '151', name: '李三 1' },
{ id: '152', name: '李三 2' },
{ id: '153', name: '李三 3' }
];

const arr2 = [
{ sname: '一级', otor: ['李三 1', '150'] },
{ sname: '一级 2', otor: ['李三 2'] },
{ sname: '一级 3', otor: ['153'] }
];

arr2.map((item, index) => {
const temArr = [];
item.otor.map((ele, idx) => {
const ar = arr1.filter((a, b) => ele === a.id || ele === a.name);
if (ar.length > 0) {
temArr.push(ar[0]);
}
});
item.otor = temArr;
});
console.log(arr2)
Colorful
2019-06-26 11:45:06 +08:00
@zantop 请教下
假如说再变化一下方式应该是怎么样修改?在第二个数组里面多加了一个新的,在第一个数组里面是没有的。

数组一:[{id:"150",name:"李三"},{id:"151",name:"李三 1"},{id:"152",name:"李三 2"},{id:"153",name:"李三 3"}]

数组二:[{"sname":"一级","otor":["李三 1","150"]},{"sname":"一级 2","otor":["李三 2"]},{"sname":"一级 3","otor":["153"]},{"sname":"一级 4","otor":[{id:"1531",name:"李三 31"}]},]

最后合并成数组:[{"sname":"一级","otor":[{id:"151",name:"李三 1"},{id:"150",name:"李三"}]},{"sname":"一级 2","otor":[{id:"152",name:"李三 2"}]},{"sname":"一级 3","otor":[{id:"153",name:"李三 3"}]},{"sname":"一级 4","otor":[{id:"1531",name:"李三 31"}]
sunriz
2019-06-26 11:47:27 +08:00
建议把 json 排好版再发,有相关网站。看得难受
Colorful
2019-06-26 11:51:16 +08:00
@sunriz 好的
source
2019-06-27 09:18:12 +08:00
arr2.map(v => ({
...v,
otor: [v.otor.map(item => arr1.find(j => (j.id === item || j.name === item)))]
}))
source
2019-06-27 09:19:59 +08:00
手抖,v.otor 前面多了一对中括号
Colorful
2019-06-27 12:46:58 +08:00
@source 我看看,受教了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/577553

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX