Тут прикол в том, что ищется первая буква имени, когда эта буква находится, получаем длину имени и прибавляем к нему 1 (почему 1? вспомните про то, что все массивы начинаются не с 1, а с 0, отсюда и это прибавление). Вот с комментариями
// Строка, где будем искать имя
var text = "Hey,my is Bobby!";
// Само имя
var myName = "Bobby";
// Сюда будет пихать буквы имени, которые извлечем из строки
var hits = [];
// Начинаем цикл, который будет перебирать каждый символ, потому что length возвращает
// количество символов в строке
for ( var i=0; i<text.length; i++ ) {
// Такк как мы перебираем не буквы, а числа, поэтому мы получаем символ из строки text
// передачей позиции символа. Если буква найдена, то продолжаем.
if(text[i]==='B'){
// Вы не поняли, зачем и почему тут j=i, да потому что мы все еще продолжаем искать
// символы в той же самой строке, а так как мы этот символ уже нашли, то нету смысла
// начинать все с самого начала, потому что это неправильно, так как если предположить, что
// у нас до этого был перебор посимвольно строки весом скажем, 100Гб, то вы сами можете
// понять, что нам незачем еще раз делать то, что мы уже сделали, поэтому мы просто
// присваиваем переменной j текущее значение и позицию i и создаем цикл который позволит
// нам полностью "забрать" слово. Как? Опять же берем длину строки с именем и прибавляем
// единицу (почему 1? вспомните про то, что все массивы начинаются не с 1, а с 0, отсюда
// и это прибавление).
for(var j = i; j < (myName.length + i); j++) {
// Отправляем букву в массив
hits.push(text[j]);
}
}
}
if (hits.length === 0) {
console.log("Your name wasn't found!");
} else {
console.log(hits);
}
Проще просто нельзя :)