@madved

Как сделать перебор вложенных объектов JS?

Есть куча объектов в цепочке вложений может быть свойство с нужным значением.

objN: {
    id: "nameN",
    keyN: val,
    ...,
    nextSibling: {
        keyN: val,
        ...,
        parentNode: {
            id: "nameN",
            keyN: val,
            ...,
            nextSibling: {
                keyN: val,
                ...,
                parentNode: {
                    id: "ИСКОМОЕ ИМЯ"
                    keyN: val,
                    ...,
                }
            }
        }
    }
}


"ИСКОМОЕ ИМЯ" может находиться на разной глубине от объекта к объекту. Как видите проверять id надо не на каждом уровне, а через один "nextSibling". Также перебор может упереться в nextSibling: null, и "ИСКОМОЕ ИМЯ" будет не найдено, в таком случае объект не подходит.

Если интересно, то эти объекты выдаёт SVGLoader фреймворка threejs, а этот перебор это поиск svg путей находящихся в группе "ИСКОМОЕ ИМЯ".

У меня к сожалению нехватает знаний это переварить.
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
@StockholmSyndrome
function getNestedObj(obj, id) {
  while (obj && obj.id !== id) {
    obj = obj.nextSibling ? obj.nextSibling.parentNode : null;
  }
  return obj;
}

console.log(getNestedObj(objN, 'ИСКОМОЕ ИМЯ'));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
от 110 000 до 150 000 руб.
Александрия Москва
от 200 000 до 250 000 руб.
Алгоритмика Москва
от 120 000 до 200 000 руб.
24 авг. 2019, в 11:59
5000 руб./за проект
24 авг. 2019, в 11:31
30000 руб./за проект
24 авг. 2019, в 10:59
750 руб./за проект