我是一个n00b,我有这个挑战要做:
- 说明**
编写一个名为getValidPassword的函数,该函数以二维数组作为参数。
数组中的每个条目代表一个密码。您需要找到没有奇数位的密码,并从函数中返回它。下面是一个示例:
var loggedPasscodes =[
[1, 4, 4, 1],
[1, 2, 3, 1],
[2, 6, 0, 8],
[5, 5, 5, 5],
[4, 3, 4, 3, 8],
[4, 3, 2, 3, 9]
];
getValidPassword(loggedPasscodes) // returns the array: [2, 6, 0, 8]
我已经在这个问题上纠结了一天--我一直在寻找解决方案,并尝试了它们,但似乎没有一个是正确的。
以下是我的尝试:
var loggedPasscodes = [
[1, 4, 4, 2],
[1, 2, 3, 1],
[2, 2, 2, 1],
[5, 5, 5, 5],
[4, 3, 4, 3],
[4, 1, 4, 8],
[2, 6, 0, 8],
[6, 2, 8, 1]
];
// ------ TRY 1: ------
var getValidPassword = function (arr){
for(var i = 0; i < loggedPasscodes.length; i++){
var loggedPasscodesItem = loggedPasscodes[i].join(''); //This turns the array into a string, as we can see below:
console.log('loggedPasscodes items ' + i + ' :' + loggedPasscodesItem);
console.log('typeof loggedPasscodesItem: ' + typeof loggedPasscodesItem );
//How can I turn a string into an array? Doesnt make sense, as I can only evaluate if elements of array are even if I turn them into numbers.
//The below for loop enters the elements of each array, and returns numbers.
for(var j = 0; j < loggedPasscodes[i].length; j++){
console.log('loggedPasscodes ' + [i] + ':' + loggedPasscodes[i][j]);
//loggedPasscodes[i][j] gives us each of the numbers.
if(loggedPasscodes[i] >= '0') && (loggedPasscodes[i][j] % 2 === 0)) {
var eachPasscodeString = loggedPasscodes[i];
var eachArray = Array.from(eachPasscodeString, Number);
console.log('eachArray ' + i + ': ' + eachArray);
} else if ((loggedPasscodes[i) >= '1') && (loggedPasscodes[i][j] % 2 ===0)){
console.log('eachArray ' + i + ': ' + eachArray);
}
}
}
};
getValidPassword(loggedPasscodes);
- 我认为一个好的解决方案是查找loggedPasscodes [i][j]是否为偶数,并通过检查loggedPasscodes [i]是否与每个loggedPasscodes [i]相同来查看它们是否属于同一个数组-如果它们符合这两个要求,则以数组形式返回它们**
上面在else if语句中给了我一个警告,说eachArray超出了范围...
也许答案是遍历每个数字并计算它们是否为偶数,如果是偶数,. slice()通过指定包含该数字序列的每个数组的长度来遍历行,并将该数字序列作为一个数组返回(. push()to a new array),这样我们就可以得到array of [2,6,0,8]的结果了。
有人能帮我吗?
1条答案
按热度按时间wgmfuz8q1#
要检查数字是否为偶数,可以使用Remainder Operator
%
:要检查所有数组值是否与特定条件匹配,请使用Array.prototype.every
要获取过滤后的Array,请使用Array.prototype.filter
示例:***(剧透警告!)***