2017-12-18 258 views
-2

在數組中找到正確的密碼,我們將完成剩下的工作。我們無法透露更多信息,對不起。 第一個數組中的每個條目代表一個密碼 - 查找沒有奇數的密碼。
- 對於每個密碼,向我們顯示偶數位的數量。 - 如果它沒有奇數,告訴我們你已經找到了它,並增加了一個終端的數量。該怎麼辦? javascript數組練習

var passcodes = [ 
 
[1, 4, 4, 1], 
 
[1, 2, 3, 1], 
 
[2, 6, 0, 8], 
 
[5, 5, 5, 5], 
 
[4, 3, 4, 3], 
 
];

所以,我已經嘗試過幾乎所有我能想到的。模,功能,for循環,我似乎無法得到它。我是一名初學者,這是我必須做的一項重要工作。但我該怎麼辦?它會要求每個密碼中偶數位的數量,所以我必須得到數組中的數組,然後編寫一些我不知道甚至可以找到的值。我被卡住了

+0

請發表您的代碼。 –

+0

想想。如果它一開始沒有幫助,那就多想一想。你會最終弄明白。 – Ivan

+2

你試過了什麼解決方案?你可以分享嗎? –

回答

0

我不知道你是什麼意思......但它確實能夠從你的問題中理解。希望這將有助於:)

var passcodes = [ 
 
[1, 4, 4, 1], 
 
[1, 2, 3, 1], 
 
[2, 6, 0, 8], 
 
[5, 5, 5, 5], 
 
[4, 3, 4, 3], 
 
]; 
 

 
    
 
var aPassCode; 
 
    while(aPassCode = passcodes.shift()){ 
 
    for(var i=0,evenCount=0,totalCount=aPassCode.length;i<totalCount;i++){ 
 
     if(aPassCode[i] % 2 == 0)evenCount++; 
 
    } 
 
    if(evenCount == totalCount){ 
 
     console.log('all digits even here: ' + aPassCode.join(',')); 
 
    }else{ 
 
     console.log(aPassCode.join(',') + ' contains ' + evenCount + ' even digits.'); 
 
    } 
 
    }

+0

這段代碼工作得很好,但我不會將這個答案提交給練習,因爲我必須非常瞭解它,並且根據Codeacademy的方式找到另一種方法,這是更多的嬰兒步驟,否則我的導師會馬上發現它,就像「顯然她沒有自己做這件事」 –

1

你的問題是不是真的適合StackOverflow的,你至少應該嘗試寫一些東西,看看你走多遠。

無論如何,你似乎想遍歷密碼中的元素以找到沒有奇數的數組。

第一項任務是如何確定一個數字是否是偶數。這與從模數2中尋找餘數一樣簡單。如果餘數爲零,則數字是偶數,否則是奇數。

所以一個簡單的測試是:(!)

var isEven; 
if (x % 2 == 0) { 
    isEven = true; 
} else { 
    isEven = false; 
} 

因爲0類型轉換爲假,並且不操作者反轉值的感實性,結果爲布爾轉換,上面可以寫爲:

var isEven = !(x % 2); 

有很多方法來遍歷數組,如果你的任務只是爲了找到沒有奇數的元素,我會使用Array.prototype.every,其作爲測試返回false儘快返回,或Array.prototype.some,這測試結束後立即返回變成現實。

但是,在這種情況下,您想計算每個元素中偶數的數量,並找到所有偶數中的第一個。一種方法是遍歷數組,並寫出元素中偶數的數量,並記下它的所有偶數。你沒有說出預期的產出,所以我只是猜測。

var passcodes = [ 
 
[1, 4, 4, 1], 
 
[1, 2, 3, 1], 
 
[2, 6, 0, 8], 
 
[5, 5, 5, 5], 
 
[4, 3, 4, 3], // this last comma affects the array length in some browsers, remove it 
 
]; 
 

 
// Set flag for first element with all even numbers 
 
var foundFirst = false; 
 

 
// Iterate over each element in passcodes 
 
passcodes.forEach(function(code) { 
 

 
    // Count of even numbers in current array 
 
    var evenCount = 0; 
 
    
 
    // Test each element of code array and increment count if even 
 
    code.forEach(function(num) { 
 
    if (!(num % 2)) ++evenCount; 
 
    }); 
 
    
 
    // If all elements are even and haven't found first yet, write out elements 
 
    if (code.length == evenCount && !foundFirst) { 
 
    console.log('Passcode (first all even): ' + code.join()); 
 
    
 
    // Set flag to remember have found first all even array 
 
    foundFirst = true; 
 
    } 
 
    
 
    // Write count of even numbers in this array 
 
    console.log('Even number count: ' + evenCount + ' of ' + code.length + ' numbers.'); 
 
});