Answer
t.me/js_testОтвет:
i know how it works
Более оптимизированный вариант кода:
const betterResult = inputStr
.split('')
.map((char, index) => {
if (needRemove.includes(index)) return;
if (needAfterSpace.includes(index)) return `${char} `;
return char;
})
.join('')
console.log(betterResult)
Объяснение:
Чтобы исключить повторное прохождение по всему массиву, можно совместить операции по удалению элементов с операциями по добавлению пробелов внутри одного метода map.
Также нет необходимости в использовании метода filter, так как метод map не добавляет в результаты элемент, для которых был возвращен результат равный undefined.
Код для проверки:
const inputStr = 'idontknowhowitworks';
const needAfterSpace = [0, 4, 8, 11, 13]
const needRemove = [1,2,3,4]
const result = inputStr
.split('')
.map((char, index) => needAfterSpace.includes(index) ? `${char} ` : char)
.map((char, index) => needRemove.includes(index) ? undefined : char)
.filter(value => value)
.join('')
console.log(result)