检查一个数组是否包含除JavaScript之外的其他东西?

我有一个数组,最有可能总是看起来像:

[null, null, null, null, null] 

有时这个数组可能会改变成类似于:

 ["helloworld", null, null, null, null] 

我知道我可以使用for循环,但是有没有办法使用indexOf来检查数组中是否有不等于null的东西。

我正在寻找像这样的东西:

 var index = indexof(!null); 

使用some返回一个布尔值:

 var arr = [null, 2, null, null]; var otherThanNull = arr.some(function (el) { return el !== null; }); // true 

DEMO

在Chrome,Safari和Firefox(以及其他浏览器的未来版本)的最新版本中,可以使用findIndex()查找第一个非null元素的索引。

 var arr = [null, null, "not null", null]; var first = arr.findIndex( function(el) { return (el !== null); } ); console.log(first); 

你可以使用Array.prototype.some来检查是否有任何元素匹配一个函数:

 var array = [null, null, 2, null]; var hasValue = array.some(function(value) { return value !== null; }); document.write('Has Value? ' + hasValue); 

这是做的工作

 var array = ['hello',null,null]; var array2 = [null,null,null]; $.each(array, function(i, v){ if(!(v == null)) alert('Contains data'); })