@atachrus

Как удалить объект в многомерном массиве на основе значения ключа?

Подскажите как правильно найти объект в многомерно массиве, по ключу "id".
Как пройтись по всем children я понимаю (вынести обход в отдельную функцию), но как потом удалить именно мне нужный объект непонятно.

В примере я могу найти и удалить объект который в корне только лежит
Edit in JSFiddle

let itemsData = [
    {
        "id": 0,
        "text": "item1",
        "children": []
    },
    {
        "id": 1,
        "text": "item2",
        "children": [
            {
                "id": 2,
                "text": "item2-1",
                "children": []
            },
            {
                "id": 5,
                "text": "item2-2",
                "children": [
                    {
                        "id": 112,
                        "text": "item2-2-1",
                        "pageId": "4",
                        "children": []
                    }
                ]
            },
            {
                "id": 4,
                "text": "item2-3",
                "children": []
            }
        ]
    },
    {
        "id": 3,
        "text": "item3",
        "children": []
    }
]
  • Вопрос задан
  • 53 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
function deleteNested(arr, key, val) {
  for (let i = arr.length; i--; ) {
    if (arr[i][key] === val) {
      arr.splice(i, 1);
    } else if (Array.isArray(arr[i].children)) {
      deleteNested(arr[i].children, key, val);
    }
  }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы