gpt4 book ai didi

javascript - 如何通过对象数组中的id查找对象?

转载 作者:行者123 更新时间:2023-11-28 08:08:00 25 4
gpt4 key购买 nike

我有这个 json 文件:

var data = [{
"id": 0,
"parentId": null,
"name": "Comapny",
"children": [
{
"id": 1235,
"parentId": 0,
"name": "Experiences",
"children": [
{
"id": 3333,
"parentId": 154,
"name": "Lifestyle",
"children": []
},
{
"id": 319291392,
"parentId": 318767104,
"name": "Other Experiences",
"children": []
}
]
}
]
}];

我需要通过 id 查找对象。例如,如果需要查找 id:319291392 的对象,我必须获取:

{"id": 319291392,"parentId": 318767104,"name": "Other Experiences","children": []}

我怎样才能做到这一点?

我尝试使用此功能:

function findId(obj, id) {
if (obj.id == id) {
return obj;
}
if (obj.children) {
for (var i = 0; i < obj.children.length; i++) {
var found = findId(obj.children[i], id);
if (found) {
return found;
}
}
}
return false;
}

但它不起作用,因为它是一个对象数组。

最佳答案

如果你的起点是一个数组,你想稍微反转一下你的逻辑,从数组而不是对象开始:

function findId(array, id) {
var i, found, obj;

for (i = 0; i < array.length; ++i) {
obj = array[i];
if (obj.id == id) {
return obj;
}
if (obj.children) {
found = findId(obj.children, id);
if (found) {
return found;
}
}
}
return false; // <= You might consider null or undefined here
}

然后

var result = findId(data, 319291392);

...查找 id 319291392 的对象。

Live Example

关于javascript - 如何通过对象数组中的id查找对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24605062/

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