如何检查数组中的多个元素 - 警告作业

时间:2016-12-07 00:11:23

标签: javascript for-loop

我无法找出可以检查所有6个数字的条件。我尝试使用||但它只是凌乱,我知道这不正确。

使用以下数组,创建名为numThrees的变量,其值为[13,23,33,43,53,63,73]

var numArray = [13, 15, 17, 23, 25, 27, 33, 35, 37, 43, 45, 47, 53, 55, 57, 63, 65, 67, 73, 75, 77];

var numThrees = [];

for (i = 0; i < numArray.length; i++) {
    if (numArray[i] ===  13) {
    numThrees[i] = numArray[i];
    };
  };
 document.getElementById('q7').innerHTML = numThrees;

5 个答案:

答案 0 :(得分:0)

您可以检查10号码的剩余部分是否为3,这符合您的条件(13,23,33,43,53,63和73)

&#13;
&#13;
var numArray = [13, 15, 17, 23, 25, 27, 33, 35, 37, 43, 45, 47, 53, 55, 57, 63, 65, 67, 73, 75, 77];

var numThrees = [];

for (i = 0; i < numArray.length; i++) {
  if (numArray[i]%10==3) {
    numThrees.push(numArray[i]);
  };
};
document.getElementById('q7').innerHTML = numThrees;
&#13;
<div id="q7">
  </div>
&#13;
&#13;
&#13;

希望有所帮助

答案 1 :(得分:0)

有几种方法可以做到这一点。这里有两个使用不同的逻辑来提取正确的数字:

您可以手动方式执行此操作:

&#13;
&#13;
var numArray = [13, 15, 17, 23, 25, 27, 33, 35, 37, 43, 45, 47, 53, 55, 57, 63, 65, 67, 73, 75, 77];

var numThrees = [];

for(var i = 0; i < numArray.length; ++i){
 
  // Turn the current array element into a string
  var strVal = numArray[i].toString();
  
  // If that string ends with "3" add it to the new array:
  strVal[strVal.length-1] === "3" ? numThrees.push(numArray[i]) : "";
}

console.log(numThrees);
&#13;
&#13;
&#13;

您可以使用Array.prototype.filter方法:

&#13;
&#13;
var numArray = [13, 15, 17, 23, 25, 27, 33, 35, 37, 43, 45, 47, 53, 55, 57, 63, 65, 67, 73, 75, 77];

// The Array.prototype.filter method iterates every item in
// a given array and allows you to implement any logic you
// like and return any value from the original array you like
// into a new array that will be a filter of the first one.
var numThrees = numArray.filter(function(element){
  // Check the current element being iterated for one of 
  // a designated set of values and return that element
  // into the filtered array if it is a match.
  switch(element){
    case 13:
    case 23:
    case 33:
    case 43:
    case 53:
    case 63:
    case 73:
      return element;
    default:
      break;
  }
});

console.log(numThrees);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您的说明有点武断,但这是一种更有效的方法:

var numArray = [13, 15, 17, 23, 25, 27, 33, 35, 37, 43, 45, 47, 53, 55, 57, 63, 65, 67, 73, 75, 77];

var numThrees = [];

for (i = 0; i < numArray.length; i+=3) {
    numThrees.push(numArray[i]);
};
document.getElementById('q7').innerHTML = numThrees;

因为我们可以观察到给定的数组在某些间隔相等的索引处具有所需的值,所以不需要遍历整个数组。

您的指示并未指定我们是否可以基于我们知道原始数组中的内容和索引的假设来执行此操作。如果是这种情况,那么你需要以某种方式迭代数组,然后测试每个索引是否包含你想要的值。

我认为这是一个可以接受的解决方案。

编辑:基于我的理解(可能更有效率)。我不认为,在这种情况下,我们应该在硬编码时迭代整个数组。我们知道数组中的值以及位置。只是碰巧你想要的数字在numArray中均匀分布,这更有理由不将每个值测试到某种条件。

希望这是有道理的。

答案 3 :(得分:0)

您是否需要以3结尾的项目,或数组中的每三个项目?

使用Array.filter是最有效的方法:

当可以被10整除时,返回值为3的余数。

var numArray = [13, 15, 17, 23, 25, 27, 33, 35, 37, 43, 45, 47, 53, 55, 57, 63, 65, 67, 73, 75, 77];

var numThrees = numArray.filter(function(val){
 return val % 10 === 3;
});

console.log(numThrees);

但是,如果你需要获取数组中的每个第三个元素,你可以执行以下操作,如果迭代器在除以3时没有余数,则返回该项

var numArray = [13, 15, 17, 23, 25, 27, 33, 35, 37, 43, 45, 47, 53, 55, 57, 63, 65, 67, 73, 75, 77];

var numThrees = numArray.filter(function(val, i) {
 return i % 3 === 0;
});

console.log(numThrees);

答案 4 :(得分:-2)

将数组转换为list并使用Contains

var list = numArray.ToList();
if (list.Contains(thing))
 ...