Привет. С целью разобраться в работах со строками(были некоторые пробелы) написал пару функций. Но как мне кажется код громоздкий и его можно улучшить значительно. Посоветуйте, покритикуйте ,укажите на ошибки.
Итак, нужно написать метод, который находит все позиции вхождения подстроки в строку. Сделал 3 способами, один - подсмотрел.
function findAll(str, target) {
let res = [];
for(let position = 0; position < str.length; position++) {
if(str.toLowerCase().indexOf(target.toLowerCase(), position) !==-1) {
position = str.indexOf(target, position);
res.push(str.indexOf(target, position));
}
}
return res
}
function findAllTwo(str, target) {
let position = 0,
result = [];
while (true) {
if (str.indexOf(target, position) ==-1) break;
result.push(str.indexOf(target, position));
position = str.indexOf(target, position)+1;
}
return result;
}
function findAllThree(str, target) {
let regexp = new RegExp(''+target+'', 'g');
let res = [];
while (result = regexp.exec(str)) {
res.push(result.index)
}
return res
}
// возвращает массив с позициями вхождения [10, 22, 46]
console.log( findAll('i have an apple, some appricots and fantastic apps', 'app') )
console.log( findAllTwo('i have an apple, some appricots and fantastic apps', 'app') )
console.log( findAllThree('i have an apple, some appricots and fantastic apps', 'app') )
Третий как мне кажется самый лучший, но как улучшить 2 предыдущих?