gpt4 book ai didi

javascript - 按键/值合并对象数组

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

我有两个单独的对象数组,如果特定键值匹配,我需要将它们合并。分析数据后可能更有意义:

数组 1

let categories = [
{ id: 5, slug: 'category-5', items: [] },
{ id: 4, slug: 'category-4', items: [] },
{ id: 3, slug: 'category-3', items: [] },
]

数组2

let items = [
{ id: 5, data: [{ title: 'item title', description: 'item description' }] },
{ id: 5, data: [{ title: 'item title 2', description: 'item description 2' }] },
{ id: 4, data: [{ title: 'item title 4', description: 'item description 4' }] },
]

预期输出

let mergedOutput = [
{ id: 5, slug: 'category-5',
items: [
{ title: 'item title', description: 'item description' },
{ title: 'item title 2', description: 'item description 2' }
]
},
{ id: 4, slug: 'category-4',
items: [
{ title: 'item title 4', description: 'item description 4' },
]
},
{ id: 3, slug: 'category-3', items: [] },
]

所以...如果它们的 id 匹配,我需要将数组 2 添加到数组 1 中。数组 1 将保持不变,但如果数组 2 匹配,则数组 1items 属性(空)将被 Array 2 的 data 属性替换

我知道这是一个非常基本/多余的问题,但我找不到适合我的用例/对象结构的资源。

我能够轻松地使用 lodash 对数组进行分组——所以如果该库有类似的解决方案——那就太好了!或者只是一些方向就足够了。

提前致谢!

最佳答案

您可以循环第一个数组,然后使用 filter 获取与当前元素具有相同 id 的对象,并将该项目添加到当前对象。

let categories = [
{ id: 5, slug: 'category-5', items: [] },
{ id: 4, slug: 'category-4', items: [] },
{ id: 3, slug: 'category-3', items: [] },
]

let items = [
{ id: 5, data: [{ title: 'item title', description: 'item description' }] },
{ id: 5, data: [{ title: 'item title 2', description: 'item description 2' }] },
{ id: 4, data: [{ title: 'item title 4', description: 'item description 4' }] },
]

categories.forEach(function(e) {
var i = items.filter(a => a.id == e.id).map(a => a.data);
e.items = i;
})

console.log(categories)

关于javascript - 按键/值合并对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45683339/

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