【问题标题】:Evaluating an Array for Uniformity评估阵列的一致性
【发布时间】:2016-07-13 13:02:38
【问题描述】:

我正在尝试评估数组的一致性。 IE。 var num =[1,1,1,1,1,] // true 或 var num =[1,1,2,1,1] = //false。它也可以用于字符串数组。我想做的是评估整个数组并返回一个“真”或“假”。到目前为止,我的代码评估数组中的每个项目并返回每个项目的结果。我对编码和在线上课以及在不作弊的情况下解决问题非常陌生!

var num = [1,1,3,1,1];
var first = num[0];

num.forEach(function (num, i) {
  if(first === num){
  console.log(true);
} else {
  console.log(false);
}
});

【问题讨论】:

    标签: javascript arrays foreach boolean


    【解决方案1】:

    你在正确的轨道上。不要为每个答案记录truefalse,而是创建一个变量来存储整体答案,然后在完成后打印出来。像这样的:

    var num = [1,1,3,1,1];
    var first = num[0];
    var ans = true;
    
    num.forEach(function (n) {
      if(first !== n){
         ans = false;
      } 
    });
    console.log(ans);
    

    【讨论】:

    • 完美。我在其他一些示例中看到了这一点,但看不出它是如何相关的。这非常有效,并且符合我的代码逻辑。不确定这是否是评估阵列一致性的最佳方法,但它有效,我理解。干杯。
    【解决方案2】:

    使用.some()

    var num = [1,1,3,1,1];
    
    var notUni = num.some(function(val, idx, arr){
      return val != arr[0];  // (If arr[0] (1) is the base you're interested in)
    });  
    
    console.log( notUni ); // true
    

    P.S:some 将在发现 (true) 不匹配后立即退出。

    【讨论】:

    • 它比forEach 更好的解决方案,因为它提前退出。
    • 谢谢。我改变了 val != arr[0]; to == 它给了我正确的值。虽然我需要研究 .some 才能确切了解发生了什么。
    【解决方案3】:

    使用Array.prototype.every()函数

    var num = [1, 1, 3, 1, 1];
    
    var result = num.every(n => n == num[0]);
    

    every() 方法测试数组中的所有元素是否通过提供的函数实现的测试。

    var num = [1, 1, 1, 1, 1];
    
    var result = num.every(n => n == num[0]);
    
    document.write(result);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-05
      • 1970-01-01
      • 2016-11-02
      • 2014-02-08
      • 1970-01-01
      相关资源
      最近更新 更多