【发布时间】:2022-01-04 13:30:05
【问题描述】:
我正在尝试创建一个必须执行以下操作的函数:
-
将一个 JavaScript 对象作为第一个参数
-
对象可以有任何结构和深度
-
将包含键的字符串作为第二个参数
-
返回一个映射,其中包含为该键找到的所有值 对象 o 结果映射中的键应是对象中键的路径 其中“/”用作分隔符,地图的根键是对象的名称
结果必须是这样的:
let obj = {
id: 1,
b: "value",
c: 404,
d: {
id: "value",
b: {
id: 1,
b: 2
}
},
};
myFunction(obj, 'id')
// [ ["" -> 1] ["d" -> "value"] ["d/b" -> 1] ]
我正在做以下事情:
let **findAllByKey** = (obj, keyToFind) =>
Object.entries(obj).reduce(
(acc, [key, value]) =>
key === keyToFind
? acc.concat(value)
: typeof value === "object"
? acc.concat(findAllByKey(value, keyToFind))
: acc,
[]
);
console.log(findAllByKey(obj, "id"));
但这仅返回值,我无法获取路径:“/d/b”, 它说必须使用地图构造函数( New Map() )完成,但使用地图,我不知道该怎么做。
【问题讨论】:
标签: javascript arrays object