@cester

Как модифицировать массив?

Добрый день! Посоветуйте пожалуйста как лучше модифицировать массив?
Входной массив
const arr = [
{ val: 1, from: 0, to: 25 }, 
{ val: 2, from: 9, to: 13 }, 
{ val: 3, from: 14, to: 20 }];

на выходе нужно получить такое
const output =  [[0, 9], [9, 13], [14, 20], [20, 25]];

Буду благодарен за помощь)
  • Вопрос задан
  • 162 просмотра
Решения вопроса 2
@vshvydky
const arr = [
{ val: 1, from: 0, to: 25 }, 
{ val: 2, from: 9, to: 13 }, 
{ val: 3, from: 14, to: 20 }]
const output = arr
    .map(el=>[el.from, el.to])
    .flat()
    .sort((a,b)=>a-b)
    .map((el, index, array)=>array[index+1] && [el, array[index+1]])
    .filter(el=>el)

хотя я не учел пробел между 13 14 но он не укладывается в логику остального примера, короче пример кода думаю даст пояснение как можно работать с массивами
Ответ написан
potapchino
@potapchino
arr.reduce((output, item, i, source) => {
  if (i === 0) {
    return [[item.from, source[++i].from]]
  }

  if (i === source.length - 1) {
    return [...output, [item.from, item.to], [item.to, source[0].to]]
  }

  return [...output, [item.from, item.to]]
}, []);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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