Javascript I';m在API响应中接收一个对象数组,并且是嵌套数组。我想通过ID找到一个对象
您好,这里是一个从API响应接收的对象数组,我正在使用angular.js和javascript,我希望获取具有find by id的对象,id是“1_1_1”。这可能吗?我被卡住了。请帮忙Javascript I';m在API响应中接收一个对象数组,并且是嵌套数组。我想通过ID找到一个对象,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,您好,这里是一个从API响应接收的对象数组,我正在使用angular.js和javascript,我希望获取具有find by id的对象,id是“1_1_1”。这可能吗?我被卡住了。请帮忙 [ { "text": "folder 1", "parent": { "id": "1", "name": "folder 1" }, "children": [ {
[
{
"text": "folder 1",
"parent": {
"id": "1",
"name": "folder 1"
},
"children": [
{
"text": "folder 1_1",
"parent": {
"id": "1_1",
"name": "folder 1_1"
},
"children": [
{
"text": "folder 1_1_1",
"parent": {
"id": "1_1_1",
"name": "folder 1_1_1"
},
"children": []
},
{
"text": "folder 1_1_2",
"parent": {
"id": "1_1_2",
"name": "folder 1_1_2"
},
"children": []
}
]
},
{
"text": "folder 1_2",
"parent": {
"id": "1_2",
"name": "folder 1_2"
},
"children": [
{
"text": "folder 1_2_1",
"parent": {
"id": "1_2_1",
"name": "folder 1_2_1"
},
"children": []
}
]
}
]
},
{
"text": "folder 2",
"parent": {
"id": "2",
"name": "folder 2"
},
"children": [
{
"text" : "folder 2_1",
"parent": {
"id": "2_1",
"name": "folder 2_1"
},
"children": []
},
{
"text" : "folder 2_2",
"parent": {
"id": "2_2",
"name": "folder 2_2"
},
"children": []
},
{
"text" : "folder 2_3",
"parent": {
"id": "2_3",
"name": "folder 2_3"
},
"children": [
{
"text" : "folder 2_3_1",
"parent": {
"id": "2_3_1",
"name": "folder 2_3_1"
},
"children": []
}
]
},
]
},
{
"text": "folder 3",
"parent": {
"id": "3",
"name": "folder 3"
},
"children": []
}
]
JavaScript或Angular中都没有内置函数来实现这一点 但是,这是一个可以通过递归非常容易地解决的问题:
function findById(id, items) {
for (var i = 0; i < items.length; i++) {
if (items[i].id === id) {
return items[i];
}
var result = findById(id, items[i].children);
if (result !== null) {
return result;
}
}
return null;
}
函数findById(id,items){
对于(变量i=0;i
试试这个:
function isMatch(element, criteria) {
var parent = null;
if (typeof element.parent !== 'undefined') {
parent = element.parent;
if (typeof parent.id !== 'undefined') {
return (parent.id === criteria);
}
}
return false;
}
function findById (tree, criteria) {
for (var i = 0; i < tree.length; i = i + 1) {
var obj = tree[i];
if (isMatch(obj, criteria)) {
return obj;
};
if (typeof obj.children !== 'undefined') {
var foundElement = findById(obj.children, criteria);
if (foundElement != null) {
return foundElement;
}
}
}
return null;
}
函数isMatch(元素、标准){
var parent=null;
if(typeof element.parent!=“未定义”){
parent=element.parent;
if(typeof parent.id!=“未定义”){
返回(parent.id==条件);
}
}
返回false;
}
函数findById(树,条件){
对于(变量i=0;i