如何提高此 json 搜索的效率

How to improve efficiency of this json search

我有一些 json 数据:

var data = {
  "version": "2.0",
  "result": {
      "0": [418789, 418790, 418791],
      "1": [431961, 431962, 431963], 
  }
};

我有我正在寻找的值 x,在这种情况下 x = 431962 为此,我编写了下面提供的搜索功能:

for (var i = 0; i < Object.keys(data.result).length; i++) {
  for (var p = 0; p < Object.values(data.result)[i].length; p++) {
    if (Object.values(data.result)[i][p] == 418789) {
      console.log(Object.keys(data.result)[i])
    }
  }
}

但是我的问题是这个搜索函数由 2 个嵌套的 for 循环组成,因此在搜索大量 JSON 数据时速度非常慢,但是我似乎无法想出一个关于如何提高效率和速度的解决方案。

此搜索试图找到值 x 存在于哪个键中,其中键名称实际上是随机名称,没有特定顺序,并且 JSON 数据有几千个键,每个数组包含大约从 1 到 1,000,000 的 50 个值

您可以做的一项改进是存储对您正在使用的特定 object/array 的引用,这样您就不必 return 回到 Object.keys(... ) 一次又一次。

let data = {
  "version": "2.0",
  "result": {
    "0": [418789, 418790, 418791],
    "1": [431961, 431962, 431963],
  }
};

function findWhichArrayContainsValue(val) {
  for (key in data.result) {
    const candidateArray = data.result[key];
    if (candidateArray.includes(val)) {
      return candidateArray;
    }
  }
  return undefined;
}

console.log(findWhichArrayContainsValue(418789));

console.log(findWhichArrayContainsValue(898989));