Задать вопрос
@fajid

Как разбить строку на определенное количество строк?

Как разбить строку на определенное количество строк?

подаю на вход строку и нужное кол-во строк
foo('asdfghjklqwerty', 3)
на выходе хочу получить либо новые строки, либо массив этих строк
asdfg
hjklq
werty
  • Вопрос задан
  • 245 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
function chunked(str, numChunks) {
  const chunkSize = Math.ceil(str.length / numChunks);
  return Array.from(
    { length: numChunks },
    (_, i) => str.slice(i * chunkSize, (i + 1) * chunkSize)
  );
}

UPD. В комментариях докладывают:

неаккуратненько как-то:
chunked('test', 3) // [ "te", "st", "" ]

Это поправимо. Наверное. Размер куска округляем вниз. Есть два варианта:

Первый - закидываем остаток в последний кусок:

const chunked = (str, numChunks) =>
  Array.from(
    { length: numChunks },
    function(_, i) {
      return str.slice(this(i), i < ~-numChunks ? this(-~i) : str.length);
    },
    i => i * (Math.max(1, str.length / numChunks | 0))
  );

Второй - раскидываем по одному дополнительному элементу в те куски, что идут первыми:

function chunked(str, numChunks) {
  const chunkSize = str.length / numChunks | 0;
  const numLooseItems = str.length % numChunks;
  const chunkIndex = i => i * chunkSize + Math.min(i, numLooseItems);

  return Array.from(
    { length: numChunks },
    (_, i) => str.slice(chunkIndex(i), chunkIndex(-~i))
  );
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
  1. получите длину исходной строки
  2. разделите на нужное кол-во строк с округлением в бОльшую сторону
  3. вытаскивайте под-строки из исходной строки в цикле
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы