NodeJS 在javascript中检查数组是否包含null以外的内容?

qyyhg6bp  于 2023-04-05  发布在  Node.js
关注(0)|答案(5)|浏览(143)

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

[null, null, null, null, null]

有时这个数组可能会变成这样:

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

我知道我可以使用for循环,但是有没有一种方法可以使用indexOf来检查数组中是否有不等于null的内容。
我正在寻找类似的东西:

var index = indexof(!null);
oewdyzsn

oewdyzsn1#

使用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));
tuwxkamq

tuwxkamq2#

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

var arr = [null, null, "not null", null];

var first = arr.findIndex( 
              function(el) { 
                return (el !== null);
              }
            );

console.log(first);

(for其他浏览器,有一个polyfill为findIndex()

jmo0nnb3

jmo0nnb33#

你可以使用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);
2ledvvac

2ledvvac4#

如果你只是想检查数组中是否有任何非falsy的值,那么就

arr.some(el => !!el)
nnt7mjpx

nnt7mjpx5#

这就行了

var array = ['hello',null,null];
var array2 = [null,null,null];

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

相关问题