2015-11-21 9 views
5

Próbuję zapisać liczby, które są podzielne przez trzy w tablicy threes. Jak to się robi?Jak przechowywać numer podzielny w nowej tablicy z 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

patrz [Dlaczego jest za pomocą „dla ... w” z tablicy iteracji taki zły pomysł?] (http: //stackoverflow.com/q/500504/1529630) – Oriol

Odpowiedz

1

Było kilka problemów.

  • Potrzebowałeś dostęp do liczby w tablicy przy użyciu indeksu numbers[i] raczej niż tylko sprawdzanie indeksu.

  • Należy również przekazać dwa parametry do funkcji iLoveThree.

Oto kod działa:

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] 

Na marginesie, można uprościć swój kod za pomocą .filter() method.

Jeśli wartość boolean num % 3 === 0 jest prawdziwa, to liczba nie jest usuwana z tablicy.

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

Doskonale dziękuję! – user3713354

1

po naciśnięciu wstawiono nawiasy wokół numeru i. Nie potrzebujesz nawiasów.

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

Proszę bardzo:

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

Spróbuj zastępując for pętli for..in pętli; stosując numbers[i] liczby w tablicy zamiast [i] indeks elementu w tablicy w bieżącej iteracji

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)

Powiązane problemy