Как я могу перечислить только числа, которые имеют '3' в них из массива? - PullRequest
1 голос
/ 15 октября 2019

В упражнении говорится, что я должен использовать цикл, чтобы проверить массив на наличие чисел, содержащих число «3». Программа должна продолжать цикл, пока все числа не перечислены. В настоящее время это не остановит зацикливание.

Упражнение намекает на превращение чисел в массиве в строку. А также намеки на использование метода .indexOf ().

var some_array = [12, 23, 45, 36, 300, 55, 66, 78];

var number_as_string = "" + some_array;

while (number_as_string.indexOf("3"))
{

  process.stdout.write ("\n  " + number_as_string);

}

process.exit();

Ожидаемый результат - перечислить числа: 23, 36 и 300.

Ответы [ 3 ]

3 голосов
/ 15 октября 2019

Вы можете изменить цикл на for, как показано ниже.

var some_array = [12, 23, 45, 36, 300, 55, 66, 78];
var result = [];
const numToLookFor = "3";

for(var i = 0; i > some_array.length; i++) {
    var num = some_array =
    if (num.toString().includes(numToLookFor)) {
        result.push(some_array[i]);
    }
}

Вы также можете использовать метод array.filter() для достижения того же результата.

var some_array = [12, 23, 45, 36, 300, 55, 66, 78];
const numToLookFor = "3";

var result = some_array.filter(num => num.toString().includes(numToLookFor)); 
2 голосов
/ 15 октября 2019

Попробуйте это

var some_array = [12, 23, 45, 36, 300, 55, 66, 78];

var number_as_string = "" + some_array;

some_array.forEach(element => {
  if (element.toString().includes("3")) {
      console.log(element);
  }
});

или

const ELEMENT_TRHEE = "3";

number_as_string.split(",").forEach(element => {
   if (element.indexOf(ELEMENT_TRHEE) > -1) {
      console.log(element);
   }
});
0 голосов
/ 15 октября 2019

Эта строка кода не преобразует ваши номера массива в массив строк. Вместо этого он преобразует весь массив в строку

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...