У меня есть два массива, мне нужно отфильтровать это по имени.
const arr1 = ["Saab", "Volvo", "BMW", "Car3", "Car2", "Van", "Bus"];
const arr2 = [
{
name: "Saab",
url: "saab/"
},
{
name: "Volvo",
url: "volvo/",
children:[
{
name: "Van",
url: "van/"
},
{
name: "Bus",
url: "bus/"
},
]
},
{
name: "BMW",
url: "bmw/"
},
{
name: "SUV",
url: "suv/",
children:[
{
name: "Car1",
url: "car1/"
},
{
name: "Car2",
url: "car2/"
},
{
name: "Car3",
url: "car3/"
},
]
}
]
Я пытался с этим кодом.
const result = arr2.filter((item) => arr1.includes(item.name);
Этот код работает нормально, но он не проверяет дочерний объект в arr2
, мне нужно проверить, основываясь на значениях arr1
, и если у меня есть дочерний объект, мне нужно также проверить это имя. Например: имя SUV
в arr1
, но значения car1
и car2
не в arr1
, тогда мне нужно удалить этот SUV
объект.
Мой вывод должен быть:
[
{
name: "Saab",
url: "saab/"
},
{
name: "Volvo",
url: "volvo/",
children:[
{
name: "Van",
url: "van/"
},
{
name: "Bus",
url: "bus/"
},
]
},
{
name: "BMW",
url: "bmw/"
},
]
Как я могу сделать это, используя javascript
, это можно сделать в es6
?