获取嵌套对象内项目的绝对键

所以我有一个对象,说


 var obj = {

   flowers: { 

            rose: 'red',

            sunflower: 'yellow',

         },


   vegetables: { ... }


 }

无论如何要让红色的关键路径返回为 obj['flowers']['rose'] ?(在我的实际对象中不可能有重复的值或键,所以不会有问题)


我曾尝试使用 Object.keys,但它会输出所有内容,因为它没有放置特定值的选项。


尝试使用 for 循环,但如果嵌套只是在单层,它会起作用。


我也尝试寻找类似的问题,但无法从中找出任何东西。请放一些光。


绝地无双
浏览 100回答 1
1回答

料青山看我应如是

使用迭代键和值的递归函数。找到值后,返回键。当找到子对象时,递归调用该函数,如果递归调用给出结果,则返回它:var obj = {  flowers: {    rose: 'red',    sunflower: 'yellow',  },  vegetables: {  }};const findPath = (parentObj, valueToFind) => {  for (const [key, value] of Object.entries(parentObj)) {    if (value === valueToFind) return '.' + key;    if (typeof value === 'object' && value !== null) {      const possibleResult = findPath(value, valueToFind);      if (possibleResult) return '.' + key + possibleResult;    }  }};console.log('obj' + findPath(obj, 'red'));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript