检查多个数组值是否相等

Check if multiple array values are equal

本文关键字:是否 数组 检查      更新时间:2023-09-26

所以我有一个数组,它有3个可能的值:0、1或2

var a = [0,0,0];

我想检查a[0]、a[1]和a[2]是否都具有相等的值"1"或"2"。我该怎么做?

因此,0,0,0将返回false,1,2,1将返回false,但1,1,1或2,2,2将为true。

试试这个:

function checkArray(array){
    var firstElement = array[0];
    if(!firstElement) return false;
    var result = true;
    array.forEach(function(elem){
        if(elem != firstElement) result = false;
    });
    return result;
}

正则表达式解决方案运行缓慢,如中所示http://jsperf.com/looping-vs-regex.所以想出了这个。

function checkArr(arr){
   var f = arr[0];
   if(f == 0) return false;
   for(var i = 0; i < arr.length; i++)
      if(arr[i] != f) return false;
   return true;
}

试试这个:

var validate = function(arr) {
    var s = 0;
    var i = l = arr.length;
    while(i --)
        s += arr[i];
    return l === s || (2 * l) === s;
};
console.log(validate([0,0,0]));//false
console.log(validate([1,2,1]));//false
console.log(validate([2,2,2]));//true
console.log(validate([1,1,1]));//true
console.log(validate([2,2,2,2,2]));//true

另一个apprach,没有循环或正则表达式:

var arr = [1,2,1];
arr.every(function (el) {
  return (el === 1 || el === 2) && el === arr[0];
})

或者,使用.some而不是.every:

!arr.some(function (el) {
  return (el !== 1 && el !== 2) || el !== arr[0];
})