Javascript 使用键值获取对象中的特定键深度
像这样,Javascript 使用键值获取对象中的特定键深度,javascript,Javascript,像这样, 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
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' }
]
}
]
}
如何使用JavaScript获取特定对象的深度
不使用
id
字符串。像('item1-2').split('-').length
,因为每个对象都有随机id。有简单的方法吗?您需要迭代所有对象,如果找到,为递归深度的每个级别取一个
函数getLevelOfId(对象,id){
var水平;
if(object.id==id)返回1;
object.children&&object.children.some(o=>level=getLevelOfId(o,id));
返回级别&级别+1;
}
const item={id:'item1',子项:[{id:'item1-1',子项:[{id:'item1-1-1'},{id:'item1-1-2'},{id:'item1-1-3'}]},{id:'item1-2',子项:[{id:'item1 2-1'}]}]};
console.log(getLevelOfId(item,'item1'));//1.
console.log(getLevelOfId(项'item1-2'));//2.
console.log(getLevelOfId(项'item1-1-1');//3.
console.log(getLevelOfId(项'item1-1-2');//3.
log(getLevelOfId(项'foo'));//未定义的您需要迭代所有对象,如果找到,则为递归深度的每个级别取一个对象 函数getLevelOfId(对象,id){ var水平; if(object.id==id)返回1; object.children&&object.children.some(o=>level=getLevelOfId(o,id)); 返回级别&级别+1; } const item={id:'item1',子项:[{id:'item1-1',子项:[{id:'item1-1-1'},{id:'item1-1-2'},{id:'item1-1-3'}]},{id:'item1-2',子项:[{id:'item1 2-1'}]}]}; console.log(getLevelOfId(item,'item1'));//1. console.log(getLevelOfId(项'item1-2'));//2. console.log(getLevelOfId(项'item1-1-1');//3. console.log(getLevelOfId(项'item1-1-2');//3.
log(getLevelOfId(项'foo'));//未定义如果结构id和children是固定的,那么在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”,“children”:[{“id”:“item1-2-1”}]}]
level=(number of“{”)-(number of“}”)//在字符串的搜索位置之前如果结构id和children是固定的,那么在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”,“children”:[{“id”:“item1-2-1”}]}]
level=(number of“{”)-(number of“}”)//在字符串的搜索位置之前Hi!请拿着(你得到了一枚徽章!)通读一下,尤其是你最好的选择是做你的研究,做相关的主题,然后试一试。(你可能会想使用递归。)如果你在做了更多的研究和搜索后陷入困境,无法摆脱困境,请发布你的尝试,并明确说明你的困境。人们会很乐意帮忙的。可能是@SouritraDasGupta的复制品,这是不同的。这个问题是关于
最大深度
,这是关于特定深度
。嗨!请拿着(你得到了一枚徽章!)通读一下,尤其是你最好的选择是做你的研究,做相关的主题,然后试一试。(你可能会想使用递归。)如果你在做了更多的研究和搜索后陷入困境,无法摆脱困境,请发布你的尝试,并明确说明你的困境。人们会很乐意帮忙的。可能是@SouritraDasGupta的复制品,这是不同的。这个问题是关于最大深度
,这是关于特定深度
。在itemitem1-1-1
和itemitem1-1-2
的情况下,这两个级别相同。也许两者的结果会不同。如果结构是固定的,结果是相同的,如图所示,还考虑了“}”的数目,所以item1-1-1=3-0,item1-1-2=4-1Oh,我不知道。这是有道理的!我也会这样尝试!在项目item1-1-1
和项目item1-1-2
的情况下,这两个项目具有相同的级别。也许两者的结果会不同。如果结构是固定的,结果是相同的,如图所示,还考虑了“}”的数目,所以item1-1-1=3-0,item1-1-2=4-1Oh,我不知道。这是有道理的!我也会这样尝试!
function getLevelOfId(){
...
}
getLevelOfId('item1') =====> return 1
getLevelOfId('item1-2') =====> return 2
getLevelOfId('item1-1-1') =====> return 3
getLevelOfId('item1-1-2') =====> return 3