【发布时间】:2021-10-06 19:08:15
【问题描述】:
我有一个具有某些属性的对象的深度嵌套数组,并且给定一个对象作为输入,它应该递归地更新该对象及其子对象。它的格式如下,
const arr = [
{
name: "parent",
children: [
{
name: "child1",
children: [
{
name: "granchild1",
children: [],
class: "level-2 leaf",
config: {
name: "granchild1",
value1: false,
value2: false
}
}
],
class: "level-1 leaf",
config: {
name: "child1",
value1: false,
value2: false
}
},
{
name: "child2",
children: [],
class: "level-1 leaf",
config: {
name: "child2",
value1: false,
value2: false
}
}
],
class: "level-0 group",
config: {
name: "parent",
value1: false,
value2: false
}
}
];
给定的输入对象看起来像
const obj = {
name: "parent",
value1: true,
value2: true
};
鉴于此输入,具有匹配名称的对象应该使用 obj's 值更新它和孩子的 value1 和 value2
输出应该是这样的
const result = [
{
name: "parent",
children: [
{
name: "child1",
children: [
{
name: "granchild1",
children: [],
class: "level-2 leaf",
config: {
name: "granchild1",
value1: true,
value2: true
}
}
],
class: "level-1 leaf",
config: {
name: "child1",
value1: true,
value2: true
}
},
{
name: "child2",
children: [],
class: "level-1 leaf",
config: {
name: "child2",
value1: true,
value2: true
}
}
],
class: "level-0 group",
config: {
name: "parent",
value1: true,
value2: true
}
}
];
我尝试过的代码。如何实现相同的输出
const res = arr.map((item) => {
let foundItem = arr.find((item) => item.name === obj.name);
return {
...foundItem,
children: {
value1: obj.value1,
value2: obj.value2
}
};
});
【问题讨论】:
标签: javascript arrays