我有两个 JSON 数组 a 和 b。 a 是我想要添加信息的数组,该信息包含在 b 中。 a 和 b 都有一个 keyNum,我将使用它来将 b 中所需的信息与 a 中的相关记录进行匹配。
a 的格式如下
a = [
{
keyNum: ...,
extra: ...
}
]
b 也像
b = [
{
keyNum: ..,
infoNeededIna; ...
}
]
我需要
infoNeededIna
进入 a 记录,其中 keyNum
在 a 和 b 之间相等。 a 和 b 具有多对一的关系,因此跟踪我在 b 中查找的索引可能比每次从第一个记录开始搜索更有效。
我知道如何暴力破解,但我想看看是否有人知道更优雅的解决方案。
我现在的想法是,我可以使用一个循环遍历 a 并使用
keyNum
然后将内部循环引导到 b 中以搜索 b 的相关索引并获取 infoNeededIna
。
编辑:
a 中 keyNum 的排序是降序,而 b 中的排序不一定是降序。
只需创建地图并从
b
更新它:
const a = [
{
keyNum: 1,
extra: 'test'
}
]
const b = [
{
keyNum: 1,
extra2: 'from B'
}
];
const map = a.reduce((r, item) => ((r[item.keyNum] ??= []).push(item), r), {});
b.forEach(item => {
map[item.keyNum]?.forEach(a => Object.assign(a, item));
});
console.log(a);