该怎么办? javascript数组练习

问题描述 投票:-2回答:2

在数组中找到正确的密码,我们将完成其余的工作。对不起,我们无法透露有关此问题的更多信息。第一个数组中的每个条目代表一个密码 - 找到没有奇数位的密码。 - 对于每个密码,请向我们显示偶数位数。 - 如果没有奇数位,请告诉我们您已找到它并将终端数量增加一个。

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

所以,我已经尝试了几乎所有我能想到的东西。模数,函数,for循环,我似乎无法得到它。我是初学者,这是我必须要做的一项重要的练习。但我该怎么办?它要求每个密码中的偶数位数,所以我必须得到数组中的数组,然后编写一些我不知道甚至找不到值的东西。我被卡住了

javascript arrays math multidimensional-array module
2个回答
1
投票

你的问题不适合StackOverflow,你至少应该尝试写一些东西,看看你得到了多少。

无论如何,你似乎想要遍历传输码中的元素来找到没有奇数的数组。

第一项任务是如何确定数字是否均匀。这就像从模数2中寻找余数一样简单。如果余数为零,那么数字是偶数,否则它是奇数。

所以一个简单的测试是:

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

由于0类型转换为false,而not(!)运算符反转值的真实性并将结果转换为boolean,因此可以写入以下内容:

var isEven = !(x % 2);

迭代数组的方法有很多,如果你的任务只是找到没有奇数的元素,我会使用Array.prototype.every,它会在测试返回false后立即返回,或者Array.prototype.some,它会在测试后立即返回返回true。

但是,在这种情况下,您需要计算每个元素中偶数的数量,并找到包含所有偶数的第一个偶数。一种方法是迭代数组并在元素中写出偶数的数量,并且还要注意它是否都是偶数。你还没有说出预期的输出是什么,所以我只是猜测了。

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.');
});

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.');
    }
  }
© www.soinside.com 2019 - 2024. All rights reserved.