Я пытаюсь разбить строку и объединить ее по индексу. Тривиальный пример:
Вход: «ABCABCAB C» Выход: «AAABBB CCC»
Итак, я создал функцию, которая преобразует строку в массив, выскакивающий из элементов в соответствующий массив и, надеюсь, объедините его обратно в строку.
Вот функция:
function splitter(string, numSplit) {
let splitHolder = [];
let splitArr = string.split("");
while (splitArr.length > 0) {
for (let i = 0; i < numSplit; i++) {
splitHolder[i] = splitHolder[i] === undefined
? [splitArr.shift()]
: splitHolder[i].push(splitArr.shift());
console.log(splitHolder);
}
}
}
Результаты для console.log показывают:
[ [ 'A' ] ]
[ [ 'A' ], [ 'B' ] ]
[ [ 'A' ], [ 'B' ], [ 'C' ] ]
который указывает, что функция работает нормально, по крайней мере, на первом l oop. Однако на втором проходе для l oop после того, как он проверяется временем. Я получаю этот журнал:
[ 2, [ 'B' ], [ 'C' ] ]
[ 2, 2, [ 'C' ] ]
[ 2, 2, 2 ]
Что очень странно, поскольку я все еще пытаюсь получить sh, что осталось от массива? Откуда взялось число c 2?
Первоначально думали, что это проблема с областью видимости, но это не так, поскольку let ограничена для всей функции.
Также попробовал уменьшить массив функция, но я все еще получаю то же число c 2.