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的复制品,这是不同的。这个问题是关于
最大深度
,这是关于
特定深度
。在item
item1-1-1
和item
item1-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