Array.filter () создает новый массив на основе результата обратного вызова.Если возвращаемое значение в каждом обратном вызове верное, будет возвращен новый массив со всеми элементами.Если возвращаемое значение каждого обратного вызова в falsy, будет создан пустой массив.
Так что в этом условии
if(letter === 'X'){
return index;
}
индекс будет числом> 0 (правда), таквсе 'X' будут возвращены как новый массив.Если первый символ в вашем вводе - «X», оператор возврата будет 0
, что неверно, и этот символ не будет во вновь созданном массиве, который возвращает filter()
.
Вы можете использоватьНапишите что-то вроде этого,
const str = 'Hello there XXXX, how are you?';
str.split('')
.map((e, i) => e === 'X' ? {allow: true, index: i} : {allow: false})
.filter(e => e.allow)
.map(e => e.index)