Как разбить массив по кускам и превратить его в строку?

Рейтинг: -1Ответов: 2Опубликовано: 26.03.2023

У меня есть массив [1,2,3,4,5,6,7,8,9,10]

Я хочу разбить его по кускам из 5 элементов, превратив это все дело в строку таким образом(пять элементов с разделителем - перевод строки):

1,2,3,4,5
6,7,8,9,10

Как это можно сделать?

Ответы

▲ 4Принят

Что бы из массива сделать строку, можно воспользоваться методом join([sep])

const arr = [1,2,3,4,5,6,7,8,9,10];

console.log(arr.join(','))

.join() собирает массив в строку через заданный разделитель

Если надо вернуть ограниченное количество элементов из массива, можно сделать функцию

const arr = [1,2,3,4,5,6,7,8,9,10];

function getStringFromArr(array, begin, end, sep) {
  return array.slice(begin, end).join(sep)
}

console.log(getStringFromArr(arr, 2, 7, ','));

Получение из массива строки с разделителем

const arr = [1,2,3,4,5,6,7,8,9,10];

function strSep(arr, sep) {
    let first = arr.splice(0, 5).join(',');
    first += sep;
    return first + arr.splice(0).join(',')
}

console.log(strSep(arr, '\n'))

Эта же функция в одну строку без лишних переменных

function strSep(arr, sep) {
    return arr.splice(0, 5).join(',') + sep + arr.splice(0).join(',')
}

Метод .splice() мутирует исходный массив! Если мутация не нужна, замените на slice()

Функции, возвращающие строку, разделенную заданным разделителем по 5 элементов

const arr = [1,2,3,4,5,6,7,8,9,10,11,12];
// Не мутирует исходный массив
function getFiveLine(arr, sep) {
    let result = '';
    let work = 0
    while (work < arr.length) {
        result += arr.slice(work, work + 5).join(',') + sep;
        work += 5;
    }
    return result;
}
// Мутирует исходный массив
function getFiveLineMut(arr, sep) {
  let result = '';
  while (arr.length) {
      result += arr.splice(0, 5).join(',') + sep;
  }
  return result;
}

console.log(getFiveLine(arr, '\n'))
console.log(getFiveLineMut(arr, '\n'))

При необходимости, последний символ разделитель можно удалить.
Так же все задать параметрами функции, допустим длину с 5 на 7 и сам разделитель элементов массивов

▲ 2

  //создаем массив из 50 элементов
  const arr = new Array(50).fill('').map((_, i) => i);
  console.log(
    arr
      .join(',')
      //переводим на новоую строку каждые 5 символов с помошю регулярного выражения
      .replace(/((\w+,?){5})/gm, '$1\n')
      //удаляем последние запятые в линиях
      .replace(/,\n/g, '\n'),
  );