为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

绝地无双 2022-06-16 10:55:25
所以我有一个对象,说 var obj = {   flowers: {             rose: 'red',            sunflower: 'yellow',         },   vegetables: { ... } }无论如何要让红色的关键路径返回为 obj['flowers']['rose'] ?(在我的实际对象中不可能有重复的值或键,所以不会有问题)我曾尝试使用 Object.keys,但它会输出所有内容,因为它没有放置特定值的选项。尝试使用 for 循环,但如果嵌套只是在单层,它会起作用。我也尝试寻找类似的问题,但无法从中找出任何东西。请放一些光。
查看完整描述

1 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

使用迭代键和值的递归函数。找到值后,返回键。当找到子对象时,递归调用该函数,如果递归调用给出结果,则返回它:


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'));


查看完整回答
反对 回复 2022-06-16
  • 1 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号