所以我有一个对象,说 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'));
添加回答
举报
0/150
提交
取消