@newaitix

Как найти все нужные элементы объекта?


Нужно найти объект с categoryId а затем найти всех его родителей и из этого сформировать новый объект.
Какая то громоздкая штука получилась и это только, чтоб найти объект с categoryId. А чтоб найти всех его родителей понадобится еще строк 100 написать.
Я двигаюсь в правильном направлении или есть варианты попроще?
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
@StockholmSyndrome
const findParents = (id, arr) => {
  for (let i = 0, l = arr.length; i < l; ++i) {
    const {category: {categoryId, categoryDescription}, children} = arr[i]; 
    const obj = {categoryId, categoryDescription};
    if (categoryId === id) {
      return [obj]; 
    } else {
      const result = findParents(id, children);
      if (result) {
        return [obj, ...result];
      }
    }
  }

  return null;
};
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
0xD34F
@0xD34F Куратор тега JavaScript
const findPath = (arr, id) =>
  (Array.isArray(arr) ? arr : []).reduce((found, n) => {
    if (!found) {
      found = n.category.categoryId === id
        ? []
        : findPath(n.children, id);

      if (found) {
        found.unshift(n.category);
      }
    }

    return found;
  }, null);
Ответ написан
@HikariNoSekai
Middle Front-end Developer at Visata Systems LLC
Почему нельзя сначало filter , а потом map по нужным параметрам? это облегчит все
Ответ написан
Ваш ответ на вопрос

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

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