我有一个很可能总是这样的数组:
[null, null, null, null, null]
有时这个数组可能会改为:
["helloworld", null, null, null, null]
我知道我可以使用for循环,但有没有办法使用indexOf
检查数组中的某些内容是否等于null。
我正在寻找类似的东西:
var index = indexof(!null);
答案 0 :(得分:22)
使用返回布尔值的some
:
var arr = [null, 2, null, null];
var otherThanNull = arr.some(function (el) {
return el !== null;
}); // true
答案 1 :(得分:4)
在最新版本的Chrome,Safari和Firefox(以及其他浏览器的未来版本)中,您可以使用findIndex()
查找第一个非null元素的索引。
var arr = [null, null, "not null", null];
var first = arr.findIndex(
function(el) {
return (el !== null);
}
);
console.log(first);
(对于其他浏览器,有一个polyfill for findIndex()
)
答案 2 :(得分:2)
您可以使用Array.prototype.some
检查是否存在与函数匹配的元素:
var array = [null, null, 2, null];
var hasValue = array.some(function(value) {
return value !== null;
});
document.write('Has Value? ' + hasValue);
如果你想要一个非null元素的第一个索引,你将不得不变得有点棘手。首先,将每个元素映射为true / false,然后获取indexOf为true:
var array = [null, null, 2, null, 3];
var index = array
.map(function(value) { return value !== null })
.indexOf(true);
document.write('Non-Null Index Is: ' + index);
答案 3 :(得分:1)
如果您只想检查数组中是否有任何非falsy谷类动物,请
arr.some(el => !!el)
答案 4 :(得分:0)
这是工作
var array = ['hello',null,null];
var array2 = [null,null,null];
$.each(array, function(i, v){
if(!(v == null)) alert('Contains data');
})