11
Июн
2021

Как объединить числа из массива в диапазоны?

Есть массив с числами, нужно вывести его значения в строку, объединив при этом ближайшие числа в диапазоны: Например: [2,3,5,10,15,16] на выходе должно получиться: 2-5, 10, 15-16

Решение есть, но кажется избыточным, хочется либо оптимизировать это,

  const numbers = document.querySelector('.numbers');
  const arr = [1, 3, 5, 6, 7, 10, 15, 16]
  const arrayToRange = (arr) => {
      const result = [];
      let start = '';
      for (let i = 0; i < arr.length; i++) {
          if (arr[i + 1] - arr[i] !== 1) {
              if (start === '') {
                  result.push(arr[i]);
              } else {
                  const str = `${start}-${arr[i]}`;
                  start = '';
                  result.push(str);
              }
          } else {
              if (start === '') {
                  start = arr[i];
              }
          }
      }


      return result;
  };
  

 const result = arrayToRange(arr);
 
 numbers.innerText = result;
 
<p class="numbers"></p>

либо найти более простое.

Источник: https://ru.stackoverflow.com/questions/1294069/%D0%9A%D0%B0%D0%BA-%D0%BE%D0%B1%D1%8A%D0%B5%D0%B4%D0%B8%D0%BD%D0%B8%D1%82%D1%8C-%D1%87%D0%B8%D1%81%D0%BB%D0%B0-%D0%B8%D0%B7-%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D0%B0-%D0%B2-%D0%B4%D0%B8%D0%B0%D0%BF%D0%B0%D0%B7%D0%BE%D0%BD%D1%8B

Тебе может это понравится...

Добавить комментарий