絕地無雙
2022-06-16 10:55:25
所以我有一個對象,說 var obj = { flowers: { rose: 'red', sunflower: 'yellow', }, vegetables: { ... } }無論如何要讓紅色的關鍵路徑返回為 obj['flowers']['rose'] ?(在我的實際對象中不可能有重復的值或鍵,所以不會有問題)我曾嘗試使用 Object.keys,但它會輸出所有內容,因為它沒有放置特定值的選項。嘗試使用 for 循環(huán),但如果嵌套只是在單層,它會起作用。我也嘗試尋找類似的問題,但無法從中找出任何東西。請放一些光。
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
提交
取消