我有一些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 個值
uj5u.com熱心網友回復:
您可以進行的一項改進是存盤對您正在使用的特定物件/陣列的參考,這樣您就不必一次又一次地回傳 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));
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/432461.html
標籤:javascript 数组 json 搜索
