我有这个数据
const data = [
{
name: "Car",
id: "19",
count: "20",
depth: "1",
children: [
{
name: "Wheel",
id: "22",
count: "3",
depth: "2",
children: [
{
name: "Engine",
id: "101",
count: "1",
depth: "3",
children: [
{
name: "Engine and Brakes",
id: "344",
count: "1",
depth: "4",
children: []
}
]
}
]
}
]
},
{
name: "Bike",
id: "3",
count: "12",
depth: "1",
children: [
{
name: "SpeedBike",
id: "4",
count: "12",
depth: "2",
children: []
}
]
}
];
我想传入多个类别id,如下所示['101','3'],并且只能得到传递的类别id的直接子项,应该是这样的:
[
{
name: "Engine and Brakes",
id: "344",
count: "1",
},
{
name: "SpeedBike",
id: "4",
count: "12",
}
]
如果没有传递类别id,我希望能够看到父项和直接子项作为默认值。如下所示:
[
{
name: "Car",
id: "19",
count: "20"
},
{
name: "Wheel",
id: "22",
count: "3"
},
{
name: "Bike",
id: "3",
count: "12",
},
{
name: "SpeedBike",
id: "4",
count: "12"
}
]
如果传递的类别id没有子项,我希望返回一个空数组。:
[]
我想避免使用for
foreach
和while
。我如何才能做到这一点?我试过使用map
和filter
,但没有运气。有人能帮帮忙吗最好的方法是什么?
我使用JS和TS。
嵌套数组可以是具有多个深度级别的深度数组。
1条答案
按热度按时间yhived7q1#
没有内置函数可以做到这一点。相反,我们可以采取两种方法:迭代和递归。
递归方法需要O(logN)的额外空间用于调用堆栈大小;因此,我们将使用迭代方法。
算法:
类别类型:
实施:
使用方法:
playground