[英]Check if multiple array values are equal
所以我有一個數組,其中包含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
另一個方法,沒有循環或正則表達式:
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];
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.