function findAll(haystack, needle) {
const str = haystack.toLowerCase();
const target = needle.toLowerCase();
const r = [];
let z;
for(let i = 0; i <= str.length; i++) {
if(!~(z = str.indexOf(target, i))) break;
r.push(z);
i = z + needle.length;
}
return r.length ? r : false;
}
function findAllTwo(str, target) {
let position = 0, z,
result = [];
while (~(z = str.indexOf(target, position))) {
result.push(z);
position = z + target.length;
}
return result;
}
ну и проверку входных параметров еще надо
можно сократить строчку, засунув
for( let i = 0; ~(z = str.indexOf(target, i)); i++)
но это нечитабельно