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