У меня следующая структура данных.Это глубоко вложенный объект.
Из следующей структуры данных мне нужно найти индекс объекта, который имеет слаг как level-1.1.3
, чтобы я мог знать, если мне предоставляется этот слаг, я должен добавитьэлементы только внутри этого дочернего массива объекта.Если не найдено ни одного слизняка, добавьте на верхнем уровне, например, Another Level 1 B
объект.
Я попробовал следующий способ, но я не сделал этого в эффективном методе, а также не смог найти индекс, но нашел весь объект,Проблема в том, что он также переходит к блоку else, поэтому, если я возвращаю ноль или что-то из блока else, включенный слаг в объект не будет найден, если он находится на слишком глубоком уровне.
const data = [{
title: "Level 1 A",
slug: "level-1-A",
url: "url",
children: [{
expanded: true,
title: "Level 1.1",
slug: "level-1.1",
}]
},
{
title: "Another Level 1 B",
slug: "another-level-1-b",
url: "url",
children: []
},
{
title: "Level 1 C",
slug: "level-1-c",
expanded: true,
children: [{
expanded: true,
title: "Level 1.1",
slug: "level-1.1",
children: [{
title: "Level 1.1.1",
slug: "level-1.1.1",
url: "/child",
children: [{
title: "Level 1.1.2",
slug: "level-1.1.2",
url: "/",
children: [{
title: "Level 1.1.3",
slug: "level-1.1.3",
url: "/"
}]
}]
}]
}]
}
];
function findIndex(data, slug) {
var index = 0;
for (var i = 0; i < data.length; i++) {
if (data[i].slug === slug) {
console.log('found in depth', data[i]);
break;
} else if (data[i].children && data[i].children.length > 0) {
console.log('did not find in first level')
findIndex(data[i].children, slug)
} else {
console.log('did not find at all')
}
}
}
findIndex(data, slug = "level-1.1.3")