gpt4 book ai didi

javascript - 获取嵌套值的路径

转载 作者:行者123 更新时间:2023-11-30 09:16:01 25 4
gpt4 key购买 nike

我想这一定是个骗子,但我在 SO 上找不到它。给定这样一个对象:

let obj = { keyA: { keyB: 'hi', keyC: { keyD: null } }, keyE: 'hi' }

有没有一种方法可以找到给定值的关键路径,如下所示:

keyPaths(obj, 'hi') // -> [ 'keyA.keyB', 'keyE' ]
keyPaths(obj) // -> [ 'keyA.keyB.keyD' ]

我尝试调整一些找到深层值(value)的答案,我几乎能够调整 this one that finds deep nulls ,但我不知道如何返回路径,而不仅仅是最深的键。

最佳答案

我会像这样进行深度优先搜索:

let obj = { keyA: { keyB: 'hi', keyC: { keyD: null } }, keyE: 'hi' }

function keyPaths(parent, value = null, chain) {
let allResults = [];
for (const prop in parent) {
if (parent.hasOwnProperty(prop)) {
const element = parent[prop];
const newChain = chain ? chain + '.' + prop : prop;
if (element === value) {
allResults.push(newChain);
}
else if (Object.keys(prop).length > 1) {
allResults = [...allResults, ...keyPaths(element, value, newChain)];
}
}
}
return allResults;
}

console.log(keyPaths(obj, 'hi')) // -> [ 'keyA.keyB', 'keyE' ]
console.log(keyPaths(obj)) // -> [ 'keyA.keyB.keyC' ]

基本上,我检查给定元素的所有属性以获得匹配值。如果某个属性与该值不匹配,但具有子属性,我将递归调用该函数,并将调用迭代和递归调用的结果合并。

关于javascript - 获取嵌套值的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55066140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com