如何高效匹配 JSON 数组中的值

问题描述 投票:0回答:1

我有两个 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 中的排序不一定是降序。

javascript arrays performance
1个回答
0
投票

只需创建地图并从

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);

© www.soinside.com 2019 - 2024. All rights reserved.