У меня есть вложенный массив объектов, и я пытаюсь найти в нем строку. Как только я нахожу это, я хотел бы вернуть содержащий объект. Вот мой код:
const myArray = [{
label: "Home",
last: "odlir",
children: [{
label: "Home 1",
last: "odlir1",
children: [{
label: "Home 2",
last: "odlir2"
}, {
label: "Home 3",
last: "odlir3"
}]
},
{
label: "Home 4",
last: "odlir4",
children: [{
label: "Home 5",
last: "odlir5"
}, {
label: "Home 6",
last: "odlir6"
}]
}
]
},
{
label: "dash",
last: "gom"
},
{
label: "principal",
last: "asd"
}
];
function contain(obj, string) {
if (obj == null)
return false;
if (obj.last == string)
return obj;
if (typeof obj.children == 'undefined')
return false;
for (let i = 0; i < obj.children.length; i++) {
if (contain(obj.children[i], string))
return obj;
}
return false;
}
function getObject(array, string) {
for (let i = 0; i < array.length; i++) {
if (contain(array[i], string)) {
return array[i];
}
}
}
console.log('test', getObject(myArray, 'odlir6'));
Я возвращаю нужный объект, родительский объект и даже деда. Вот фрагмент стека этого кода: https://stackblitz.com/edit/js-hgchmx