Начните со строки и разбейте ее на группы, как у вас:
let s= "ThisIsAReallyLongStringWithNoSpacesInItAtAll"
let groups = s.match(/.{1,8}/g);
console.log(groups)
Как видите, каждая строка содержит не более 8 символов, поэтому в конце вы захотите получить массив длиной 8. Для каждого из этих 8 массивов с определенным индексом вы хотите получить все значения string[index]
из ваших групп. Это можно выразить в виде карты:
groups.map(s => s[i]).join(''))
Это берет каждую строку из ваших групп, получает элемент i
и присоединяет его обратно к строке. Вы можете сделать это для каждого индекса 0
- 8
, используя Array.from
(или цикл for
и push()
), и в итоге получите что-то вроде:
let s= "ThisIsAReallyLongStringWithNoSpacesInItAtAll"
let groups = s.match(/.{1,8}/g);
let a = Array.from({length: 8}, (_,i) => groups.map(s => s[i]).join(''))
console.log(a)
join()
будет игнорировать значения undefined
, которые мы получаем, когда мы пытаемся индексировать за длиной более коротких столбцов, давая нам более короткие строки для последних столбцов, например "RnWaA"