Эта строка кода не преобразует ваши номера массива в массив строк. Вместо этого он преобразует весь массив в строку
var number_as_string = "" + some_array;
Это выведет значение как
"12,23,45,36,300,55,66,78"
, а во-вторых, цикл while не имеет никакого условия завершения, поэтому он входит вбесконечный цикл, так как indexOf всегда будет возвращать некоторое значение.
Этот код может помочь:
var some_array = [12, 23, 45, 36, 300, 55, 66, 78];
for (let num of some_array){
let num_in_string = num.toString()
if (num_in_string.indexOf("3") !== -1){
console.log(num_in_string)
}
}
process.exit();
Здесь я перебираю массив и получаю каждое число в переменной num как число. Затем я конвертирую число в строку с помощью метода .toString ().
Метод indexOf () возвращает индекс, если он присутствует в строке, или -1 не найден. Таким образом, блок if выполняется только в том случае, если возвращаемое значение из indexOf не равно -1, что означает, что «3» присутствует в числе и просто выводит его на консоль.
В случае, если вы не знакомы с toString ()Метод, вот альтернатива:
var some_array = [12, 23, 45, 36, 300, 55, 66, 78];
for (let num of some_array){
let num_in_string = num + ""
if (num_in_string.indexOf("3") !== -1){
console.log(num_in_string)
}
}
process.exit();