Можно ли использовать метод find() в массиве глубины x?
Например, предположим, что у меня есть следующий массив объектов, назовите его test:
[
{
"id": "1",
"title": "First",
},
{
"id": "2",
"title": "Second",
"movies": [
{
"id": "3",
"title": "Happy Gilmore",
"Actors": [
{
"id": "4",
"title": "John Doe",
},
{
"id": "5",
"title": "Jane Doe",
},
],
"Producers": [
{
"id": "6",
"title": "Max Smith",
},
{
"id": "7",
"title": "Richard Rocky",
},
],
},
{
"id": "10",
"title": "Billy Madison",
"Actors": [
{
"id": "40",
"title": "John Smith",
},
{
"id": "50",
"title": "Alex Doe",
},
],
"Producers": [
{
"id": "60",
"title": "Bob Smith",
},
{
"id": "70",
"title": "Polly Rocky",
},
],
}
]
}
]
Предположим, я ищу идентификатор «2». Я могу использовать метод find() для поиска на первом уровне массива и вернуть нужный объект, выполнив test.find(element => element.id === "2").
Однако предположим, что сейчас я ищу вхождение с идентификатором 4. Как видно из приведенного выше JSON, этот элемент находится в подмассиве внутри test. Поэтому есть ли способ, где я все еще могу искать test, чтобы найти элемент с id = 4?
Не совсем потому, что то, что вы связали, — это поиск по объекту, который может содержать вложенные объекты (метод find() не работает с объектами). В моем случае массив может содержать вложенные массивы глубины x.
Невозможно с find, вам нужна рекурсия.
@ Адам Как насчет Поиск вложенных объектов, содержащих значение?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


find не может этого сделать, но вы можете использовать его в рекурсивном подходе:
function findDeep(arr, predicate) {
let res = arr.find(predicate);
if (res !== undefined) return res;
for (let obj of arr) {
for (let value of Object.values(Object(obj)).filter(Array.isArray)) {
res = findDeep(value, predicate);
if (res !== undefined) return res;
}
}
}
let test = [{"id": "1","title": "First",},{"id": "2","title": "Second","movies": [{"id": "3","title": "Happy Gilmore","Actors": [{"id": "4","title": "John Doe",},{"id": "5","title": "Jane Doe",},],"Producers": [{"id": "6","title": "Max Smith",},{"id": "7","title": "Richard Rocky",},],},{"id": "10","title": "Billy Madison","Actors": [{"id": "40","title": "John Smith",},{"id": "50","title": "Alex Doe",},],"Producers": [{"id": "60","title": "Bob Smith",},{"id": "70","title": "Polly Rocky",},],}]}];
let res = findDeep(test, obj => obj.id == "4");
console.info(res);
Отвечает ли это на ваш вопрос? Как рекурсивно найти ключ значения во вложенном объекте