const item = {
id: 'item1',
children: [
{ id: 'item1-1',
children: [
{ id: 'item1-1-1' },
{ id: 'item1-1-2' },
{ id: 'item1-1-3' },
]
},
{ id: 'item1-2',
children: [
{ id: 'item1-2-1' }
]
}
]
}
喜欢,
function getLevelOfId(){
...
}
getLevelOfId('item1') =====> return 1
getLevelOfId('item1-2') =====> return 2
getLevelOfId('item1-1-1') =====> return 3
getLevelOfId('item1-1-2') =====> return 3
如何使用JavaScript获取特定对象的深度?
不使用id
字符串。像('item1-2').split('-').length
,因为每个对象都有随机ID。有没有简单的方法?
答案 0 :(得分:3)
您需要迭代所有对象,如果找到,则对递归深度的每个级别取一个。
function getLevelOfId(object, id) {
var level;
if (object.id === id) return 1;
object.children && object.children.some(o => level = getLevelOfId(o, id));
return level && level + 1;
}
const item = { id: 'item1', children: [{ id: 'item1-1', children: [{ id: 'item1-1-1' }, { id: 'item1-1-2' }, { id: 'item1-1-3' }] }, { id: 'item1-2', children: [{ id: 'item1-2-1' }] }] };
console.log(getLevelOfId(item, 'item1')); // 1
console.log(getLevelOfId(item, 'item1-2')); // 2
console.log(getLevelOfId(item, 'item1-1-1')); // 3
console.log(getLevelOfId(item, 'item1-1-2')); // 3
console.log(getLevelOfId(item, 'foo')); // undefined
答案 1 :(得分:1)
如果结构ID和子元素固定,那么如何在json字符串中搜索整个值,例如“ item1-1-1”:
{“ id”:“ item1”,“ children”:[{“ id”:“ item1-1”,“ children”:[{“ id”:“ item1-1-1”},{“ id “:” item1-1-2“},{” id“:” item1-1-3“}]},{” id“:” item1-2“,”儿童“:[{” id“:” item1 -2-1“}]}]}
level =(“ {”的数量)-(“}”的数量)//在搜索到的字符串的正位置之前