JSFiddle - React, Tailwind, and code Playground
JavaScript
const string = 'stackoverflow';
function subString(str, nr) {
const parts = [];
for (let i = 0, length = str.length; i < length; i += nr) {
parts.push(str.substring(i, i + nr));
}
return parts;
}
function pushLoop(str, nr) {
const chars = str.split('');
let temp = [];
let parts = [];
for (let char of chars) {
temp.push(char);
if (temp.length == nr) {
parts.push(temp.join(''));
temp = [];
}
}
if (temp.length) parts.push(temp.join(''));
return parts;
}
const splitStr = (str, size) => {
const length = Math.ceil(str.length / size);
return Array.from({ length }, (_, i) => (i *= size, str.substring(i, i + size)))
}
function match(string, nr) {
let regex = new RegExp(`.{1,${4}}`, 'g');
return string.match(/.{1,3}/g);
}
function tester(fn, str, nr) {
let start = Date.now();
return new Promise(resolve => {
let res;
for (let i = 0; i < 100000; i++) {
res = fn.call(null, str, nr);
}
resolve(Date.now() - start);
});
}
let names = ['match', 'pushloop', 'substring', 'splitStr'];
Promise.all([match, pushLoop, subString, splitStr].map(fn => tester(fn, string, 3))).then(results => {
results.forEach((res, i) => {
console.log(names[i], res, 'ms')
});
});