我怎么知道数组包含Javascript中的所有零(0)

时间:2014-02-18 16:50:42

标签: javascript arrays

我有一个数组。如果所有数组项都为0,我需要生成警报。 例如,

if myArray = [0,0,0,0];
then alert('all zero');
else
alert('all are not zero');

感谢。

5 个答案:

答案 0 :(得分:10)

你正在寻找这样的东西:

var flag = 0;

for(i = 0; i < myArray.length; ++i) {
  if(myArray[i] !== 0) {
    flag = 1;
    break;
  }
} 

if(flag) {
  alert('all are not zero');
} else {
  alert('all zero');
}

如果你想要一个非循环解决方案,基于@epascarello中无法工作的解决方案:

var arr  = [0,0,0,"",0],
    arrj = arr.join('');
if((/[^0]/).exec(arrj) || arr.length != arrj.length){
    alert('all are not zero');
} else {
    alert('all zero');
}

如果数组仅包含0

,则返回“全零”

另一种方法是:

var arr = [0,0,0,0];
const isAllZero = !arr.some(el => el !== 0);

答案 1 :(得分:9)

使用ECMA5 every

function zeroTest(element) {
  return element === 0;
}

var array = [0, 0, 0, 0];
var allZeros = array.every(zeroTest);

console.log(allZeros);

array = [0, 0, 0, 1];
allZeros = array.every(zeroTest);

console.log(allZeros);

答案 2 :(得分:2)

  

使用提前返回而不是2,3次跳跃。这将降低复杂性。我们也可以避免初始化临时变量。

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

答案 3 :(得分:1)

无需循环,简单的连接和reg表达式都可以。

var arr = [0,0,0,10,0];
if((/[^0]/).exec(arr.join(""))){
    console.log("non zero");
} else {
    console.log("I am full of zeros!");
}

另一种缓慢的方式,但只是为了好玩。

var arr = [0,0,0,0,10,0,0];
var temp = arr.slice(0).sort();
var isAllZeros = temp[0]===0 && temp[temp.length-1]===0;

答案 4 :(得分:1)

你可以试试这个:

var arr = [0,0,0,0,0];
arr = arr.filter(function(n) {return n;});
if(arr.length>0) console.log('Non Zero');
else console.log("All Zero");