我有这个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查找对象。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句