How do I know an array contains all zero(0) in Javascript

arrays, javascript

Solution

You can use either `Array.prototype.every` or `Array.prototype.some`.

`Array.prototype.every`

With `every`, you are going to check every array position and check it to be zero:

const arr = [0,0,0,0];
const isAllZero = arr.every(item => item === 0);

This has the advantage of being very clear and easy to understand, but it needs to iterate over the whole array to return the result.

`Array.prototype.some`

If, instead, we inverse the question, and we ask "does this array contain anything different than zero?" then we can use `some`:

const arr = [0,0,0,0];
const someIsNotZero = arr.some(item => item !== 0);
const isAllZero = !someIsNotZero; // <= this is your result

This has the advantage of not needing to check the whole array, since, as soon it finds a non-zero value, it will instantly return the result.

`for` loop

If you don't have access to modern JavaScript, you can use a `for` loop:

var isAllZero = true;

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

// `isAllZero` contains your result

RegExp

If you want a non-loop solution, based on the not-working one of @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');
}

This will return "all zero" if the array contains only `0`

Problem

I have an array. I need to generate an alert if all the array items are 0. For example, ``` if myArray = [0,0,0,0]; then alert('all zero'); else alert('all are not zero'); ``` Thanks.

Original source