2015-11-21 2 views
5

Я пытаюсь сохранить числа, которые делятся на три в массиве три. Как это делается?Как хранить делимый номер в новом массиве с javascript

var numbers = [1,2,3,4,5,6,7,8,9]; 
var threes = []; 
var iLoveThree = function(numbers,threes){ 
    for(i in numbers){ 
     if(i.value % 3 == 0){ 
     threes.push([i]); 
     console.log(threes); 
     } 
    } return threes 
}; 
iLoveThree(); 
+0

См [Почему используется «для ... в» с массивом итерационного такой плохой идеей?] (HTTP: //stackoverflow.com/q/500504/1529630) – Oriol

ответ

1

Было несколько проблем.

  • Вам необходимо иметь доступ к числу в массиве с использованием индекса numbers[i], а не просто проверка индекса.

  • Вам также необходимо передать два параметра функции iLoveThree.

Вот рабочий код:

var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]; 
var threes = []; 
var iLoveThree = function (numbers, threes) { 
    for (i in numbers) { 
     if (numbers[i] % 3 === 0) { 
      threes.push(numbers[i]); 
     } 
    } 
    return threes; 
}; 

console.log(iLoveThree(numbers, threes)); 
// [3, 6, 9] 

В качестве примечания, можно упростить код с помощью .filter() method.

Если значение boolean num % 3 === 0 истинно, то число не удаляется из массива.

var numbers = [1,2,3,4,5,6,7,8,9].filter(function (num) { 
    return num % 3 === 0; 
}); 

console.log(numbers); 
// [3, 6, 9] 
+0

Прекрасное спасибо! – user3713354

1

вы положили скобки вокруг i, когда вы сделали толчок. Вам не нужны скобки.

var numbers = [1,2,3,4,5,6,7,8,9]; 
var threes = []; 
var iLoveThree = function(numbers,threes){ 
    for(i in numbers){ 
     if(i.value % 3 == 0){ 
     threes.push(i); //don't put brackets here 
     console.log(threes); 
     } 
    } return threes 
}; 
1

Здесь вы идете:

var numbers = [1,2,3,4,5,6,7,8,9]; 
function iLoveThree(numbers) { 
    return numbers.filter(function(n) { 
    return n % 3 === 0; 
    }); 
} 
var threes = iLoveThree(numbers); 
1

Попробуйте заменить for петлю for..in цикла; используя numbers[i] число в массиве вместо [i] индекс элемента в массиве в текущей итерации

var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]; 
 

 
var threes = []; 
 

 
for(var i = 0; i < numbers.length; i++) 
 
    !(numbers[i] % 3) && threes.push(numbers[i]); 
 

 
console.log(threes)

Смежные вопросы