Построить плоский массив из массива дерева в узле JS - PullRequest
1 голос
/ 27 мая 2019

У меня тот же массив с неограниченным уровнем, он не ограничен тремя уровнями - это n массив уровней.

Последний parent_id = null;

Массив ввода:

{
  parent_id: {
    parent_id: {
      parent_id: null,
      _id: 5cdfcc1fb214df2da06bd0dc,
      title: 'Home & Kitchen'
    },
    _id: 5cdfcc45b214df2da06bd0dd,
    title: 'Furniture'
  },
  _id: 5cdfcc74b214df2da06bd0de,
  title: 'Sofas'
}

Ожидаемый выходной массив:

[
  {
      _id: 5cdfcc74b214df2da06bd0de,
      title: 'Sofas'
  },
  {
      _id: 5cdfcc45b214df2da06bd0dd,
      title: 'Furniture'
  },
  {
      _id: 5cdfcc1fb214df2da06bd0dc,
      title: 'Home & Kitchen'
  }
]

1 Ответ

2 голосов
/ 27 мая 2019

function getResult(input) {
  const result = [];
  let curr = input;
  while(curr){ 
     result.push({
         _id: curr._id,
         title: curr.title
     });
     curr = curr.parent_id; // if there is no parent_id inside, cycle will stop
  }
  return result;
}

let testInput = {
  parent_id: {
    parent_id: {
      parent_id: null,
      _id: '5cdfcc1fb214df2da06bd0dc',
      title: 'Home & Kitchen'
    },
    _id: '5cdfcc45b214df2da06bd0dd',
    title: 'Furniture'
  },
  _id: '5cdfcc74b214df2da06bd0de',
  title: 'Sofas'
};

console.log(getResult(testInput));
...