Size: a a a

JavaScript — русскоговорящее сообщество

2021 October 02

vS

vueDev Skillbox in JavaScript — русскоговорящее сообщество
ребят помогите решить задачу, дан массив массивов (списки числовых интервалов)
[[1,3], [2,6], [8,10], [15,18]]

нужно написать функцию, которая будет возвращать результат их соединения, если такое возможно.

в итоге функция должна вернуть такой массив
[[1,6], [8,10], [15,18]]
источник

M

Makc in JavaScript — русскоговорящее сообщество
А можно подробнее? Не вкурил алгоритм
источник

M

Makc in JavaScript — русскоговорящее сообщество
Если 2-й элемент больше 1-го другого массива их схлопнуть?
источник

vS

vueDev Skillbox in JavaScript — русскоговорящее сообщество
честно сам до конца не понял сути, но судя из математики за 8 класс, то интервальные числа это когда есть отрезок от точки а до точки б и если точки а или б другого отрезка попадают в промежуток между точкой а и б первого отрезка, то объединить эти отрезки...

из данного примера ситуация слеудющая

есть массив с числами 1 и 3 и следующий массив 2 и 6, так как 2 больше 1 и меньше 3 эти два массива надо объединить(выходит [1, 6], и судя по всему, если будут массив [5, 9] и [4, 7] то и эти массивы надо объединить превратив два массива в один [4, 9],

то есть минимальное значение одного массива и максимальное значение второго массива,  получается результат их совмещения.

то есть ситуация выходит такая что оба элемента массива надо проверить с соседним элементом массива, на вероятность того что элемент одного массива надо проверить меньше одного и большего другого и на оборот, в случае если все ок, совмещаем, если нет оставляем как есть проверяем следующий
источник

vS

vueDev Skillbox in JavaScript — русскоговорящее сообщество
пока писал сам сто раз запутался
источник

vS

vueDev Skillbox in JavaScript — русскоговорящее сообщество
плюс минус похоже задание нашел, но ума не хватает как подогнать под свою задачу)
источник

vS

vueDev Skillbox in JavaScript — русскоговорящее сообщество
источник

F

FTOH in JavaScript — русскоговорящее сообщество
let arr = [[1,3], [2,6], [8,10], [15,18]]
for(let i = 1; i < arr.length; i++) {
   let prev = arr[i - 1], cur = arr[i]
   if(prev[1] >= cur[0]) {
       arr.splice(--i, 2, [ prev[0], cur[1] ])
   }
}
console.log(arr)
источник

EP

Evgenii Popov in JavaScript — русскоговорящее сообщество
или так
const arr = [
 [1, 3],
 [2, 6],
 [8, 10],
 [15, 18]
];
const result = arr.reduce((acc, v) => {
 if (acc.length === 0) return [v];
 const [start, end] = v;
 const [prevStart, prevEnd] = acc[acc.length - 1];
 if (prevEnd >= start) {
   acc[acc.length - 1][1] = end;
 } else {
   acc.push(v);
 }
 return acc;
}, []);
console.log(result);
источник

vS

vueDev Skillbox in JavaScript — русскоговорящее сообщество
спасибо! буду разбираться )
источник

M

Makc in JavaScript — русскоговорящее сообщество
не-а там добавили условие еще, я тоже так начал делать
источник

M

Makc in JavaScript — русскоговорящее сообщество
let arr = [[5, 9],[4, 7]]
источник

0

0xLDev | Web Develop... in JavaScript — русскоговорящее сообщество
@mighty_might не флуди по чатам.
источник

EP

Evgenii Popov in JavaScript — русскоговорящее сообщество
Так подойдет? Да в начале не заметил.
"use strict";
const arr = [[1, 3], [2, 6], [8, 10], [15, 18]];
const result = arr.reduce((acc, v) => {
   if (acc.length === 0)
       return [v];
   const [start, end] = v;
   const [prevStart, prevEnd] = acc[acc.length - 1];
   if (prevStart > start)
       acc[acc.length - 1][0] = start;
   if (prevEnd >= start) {
       acc[acc.length - 1][1] = end;
   }
   else {
       acc.push(v);
   }
   return acc;
}, []);
console.log(result);
источник

M

Makc in JavaScript — русскоговорящее сообщество
1. нет 2. кидать код в чистом виде в чат тоже не пойдет
источник

M

Makc in JavaScript — русскоговорящее сообщество
let arr = [[5, 2], [8, 4]];
источник

M

Makc in JavaScript — русскоговорящее сообщество
хотя @vuejs_jun а может быть так? [5, 2], [8, 4]
источник

M

Makc in JavaScript — русскоговорящее сообщество
это я уже, наверное, переборщил
источник

M

Makc in JavaScript — русскоговорящее сообщество
все равно на let arr = [[5, 9],[4, 7]] не верно
источник

EP

Evgenii Popov in JavaScript — русскоговорящее сообщество
А это валидный массив (тут начало больше конца)?
источник