SB-*_*994 0 javascript algorithm tree
我有一个嵌套的对象
let data = {
address: "123 Street, state, country",
childObject1: {
foo: ["bar"],
person: "Hailey"
},
relatedCustomers: {
childObject: {
foo: ["bar"],
person: "Hailey2"
}
}
};
Run Code Online (Sandbox Code Playgroud)
我想按属性搜索具有键和值的对象。
例如
搜索-我的功能
数据-嵌套对象
search("person", data)
Run Code Online (Sandbox Code Playgroud)
我明白了
{
childObject: "Hailey2",
childObject1: "Hailey"
}
Run Code Online (Sandbox Code Playgroud)
我写了代码,用person搜索所有值:
https://codesandbox.io/s/suspicious-pascal-qyvjw
但我无法获取父对象键并因此得到对象:
{
childObject: "Hailey2",
childObject1: "Hailey"
}
Run Code Online (Sandbox Code Playgroud)
小智 6
请使用以下代码查找父键:
let search = (needle, parentKey, haystack, found = []) => {
Object.keys(haystack).forEach(key => {
if (key === needle) {
found.push({
[key]: haystack[key],
parentKey
});
return found;
}
if (typeof haystack[key] === "object") {
search(needle, key, haystack[key], found);
}
});
return found;
};
console.log(search("person", "data", data));
`;
Run Code Online (Sandbox Code Playgroud)
我刚刚在函数中传递了父键,并在需要时保存了它。我希望这是您要寻找的。谢谢。