2017-12-18 259 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.'); 
 
});