我有一个数组,它很可能总是看起来像:
[null, null, null, null, null]
有时这个数组可能会变成这样:
["helloworld", null, null, null, null]
我知道我可以使用for循环,但是有没有一种方法可以使用indexOf来检查数组中是否有不等于null的内容。我正在寻找类似的东西:
indexOf
var index = indexof(!null);
oewdyzsn1#
使用some返回布尔值:
some
const arr = [null, 2, null, null]; const arr2 = [null, null, null, null]; function otherThanNull(arr) { return arr.some(el => el !== null); } console.log(otherThanNull(arr)); console.log(otherThanNull(arr2));
tuwxkamq2#
在Chrome、Safari和Firefox的最新版本(以及其他浏览器的未来版本)中,可以使用findIndex()查找第一个非空元素的索引。
findIndex()
var arr = [null, null, "not null", null]; var first = arr.findIndex( function(el) { return (el !== null); } ); console.log(first);
(for其他浏览器,有一个polyfill为findIndex())
jmo0nnb33#
你可以使用Array.prototype.some来检查是否有任何元素匹配一个函数:
Array.prototype.some
var array = [null, null, 2, null]; var hasValue = array.some(function(value) { return value !== null; }); document.write('Has Value? ' + hasValue);
如果你想要一个非空元素的第一个索引,你需要做一些技巧。首先,将每个元素Map到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);
2ledvvac4#
如果你只是想检查数组中是否有任何非falsy的值,那么就
arr.some(el => !!el)
nnt7mjpx5#
这就行了
var array = ['hello',null,null]; var array2 = [null,null,null]; $.each(array, function(i, v){ if(!(v == null)) alert('Contains data'); })
5条答案
按热度按时间oewdyzsn1#
使用
some
返回布尔值:tuwxkamq2#
在Chrome、Safari和Firefox的最新版本(以及其他浏览器的未来版本)中,可以使用
findIndex()
查找第一个非空元素的索引。(for其他浏览器,有一个polyfill为
findIndex()
)jmo0nnb33#
你可以使用
Array.prototype.some
来检查是否有任何元素匹配一个函数:如果你想要一个非空元素的第一个索引,你需要做一些技巧。首先,将每个元素Map到true / false,然后获取indexOf true:
2ledvvac4#
如果你只是想检查数组中是否有任何非falsy的值,那么就
nnt7mjpx5#
这就行了