![](/img/trans.png)
[英]Convert an object to bidimensional Array which has arrays and objects in between (Javascript)
[英]Extracting an array with even numbers out a bidimensional set of arrays in javascript
/对于下面的二维数组,我试图编写一个函数来查找由偶数组成的数组,然后提取它/
var loggedPasscodes =[
[1, 4, 4, 1],
[1, 2, 3, 1],
[2, 6, 0, 8],
[5, 5, 5, 5],
[4, 3, 4, 3]
];
// 我可以检查它的元素是否相同:
if(loggedPasscodes[0][1]%2===0) {
console.log(loggedPasscodes[0])
} else {
console.log('nope')
}
//并且我可以循环该函数以至少给我数组的外层,如下所示:
function getValidPassword(x){
for(i=0;i<x.length;i++){
console.log(x[i])
}
};
console.log(getValidPassword(loggedPasscodes))
我想运行该函数并返回 [2, 6, 0, 8] 数组。 在此先感谢您的时间。
您可以通过使用Array#every
检查每个嵌套数组以及是否所有值都是偶数来找到数组。
var loggedPasscodes = [[1, 4, 4, 1], [1, 2, 3, 1], [2, 6, 0, 8], [5, 5, 5, 5], [4, 3, 4, 3]], allEven = loggedPasscodes.find(a => a.every(v => v % 2 === 0)); console.log(allEven);
如果您想要的不仅仅是第一个找到的,您可以过滤数组。
var loggedPasscodes = [[1, 4, 4, 1], [1, 2, 3, 1], [2, 6, 0, 8], [5, 5, 5, 5], [4, 3, 4, 3]], allEven = loggedPasscodes.filter(a => a.every(v => v % 2 === 0)); console.log(allEven);
我一直在修补这个问题,并找到了在阵列上运行 2 个周期并每 4 个连续匹配显示的替代答案。 Nina 的答案更好更优雅,但我发现这个很有趣,我将把它留在这里作为替代方案。
let loggedPasscodes = [
[4, 3, 4, 4],
[1, 2, 3, 7],
[4, 6, 0, 8],
[2, 2, 2, 2],
[4, 4, 4, 4],
[2, 2, 2, 2],
[1, 3, 4, 5],
[2, 2, 2, 2]
];
function getValidPassword(x){
var password =[];
//main array cycle:
for(ciclop=0;ciclop<x.length;ciclop++){
//secondary array cycle:
for (ciclos=0;ciclos<=4;ciclos++){
//if it gets 4 matches in a row:
if (password.length===4){
console.log(password);
password=[];
}
// if it is even:
else if (x[ciclop][ciclos]%2===0) {
password.push(x[ciclop][ciclos]);
}
//if it is odd:
else if(x[ciclop][ciclos]%2!==0){
password=[];
}
}
}
}
getValidPassword(loggedPasscodes);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.