gpt4 book ai didi

javascript - 使用键值获取对象中的特定键深度

转载 作者:行者123 更新时间:2023-11-30 09:16:01 25 4
gpt4 key购买 nike

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。有没有简单的方法?

最佳答案

您需要迭代所有对象,如果找到,则为递归深度的每个级别取一个。

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

关于javascript - 使用键值获取对象中的特定键深度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55059134/

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