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)