首页>>前端>>JavaScript->如何从 JavaScript 中的数组中删除空元素?

如何从 JavaScript 中的数组中删除空元素?

时间:2023-11-30 本站 点击:0

从 JavaScript 数组中删除空元素看似很简单,由于 JavaScript 的语言的特殊性,对于空的理解有不同意义。在本文中,将通过如何从 JavaScript 数组中删除空元素,总结一下 JavaScript 中空值和假值的知识点。

关于空值

在 JavaScript 中,空值的定义通常应该考虑以下三种情况 空字符串nullundefined

关于假值 Falsy

在 JavaScript 中,有一个专门的列表,包括以下7个值,它们被称为假值,即它们在条件语句中都被计算为 false

数字 0-0:数字 0-0

BigInt 0n -0n :在 BigInt 零和负 BigInt 零

null

undefined

false

NaN

空字符串 "" : 空字符串值。

上面 7 个值单独在条件语句中是 false ,但是它们之间的比较未必就是 true ,下面的代码展示了一些 == 比较,看看有没有让你觉得不可思议的判断:

console.log(0==0)//trueconsole.log(0==0n)//trueconsole.log(0==null)//falseconsole.log(0==undefined)//falseconsole.log(0==false)//trueconsole.log(0==NaN)//falseconsole.log(0=="")//trueconsole.log("TheBigInt0n")console.log(0n==0n)//trueconsole.log(0n==null)//falseconsole.log(0n==undefined)//falseconsole.log(0n==false)//trueconsole.log(0n==NaN)//falseconsole.log(0n=="")//trueconsole.log("Thevaluenull")console.log(null==null)//trueconsole.log(null==undefined)//trueconsole.log(null==false)//falseconsole.log(null==NaN)//falseconsole.log(null=="")//falseconsole.log("Thevalueundefined")console.log(undefined==undefined)//trueconsole.log(undefined==false)//falseconsole.log(undefined==NaN)//falseconsole.log(undefined=="")//falseconsole.log("Thebooleanfalse")console.log(false==false)//trueconsole.log(false==NaN)//falseconsole.log(false=="")//trueconsole.log("ThenumberNaN")console.log(NaN==NaN)//falseconsole.log(NaN=="")//falseconsole.log(""=="")//true

下面让来看看 === 的比较结果:

console.log(0===0);//trueconsole.log(0===0n);//falseconsole.log(0===null);//falseconsole.log(undefined===0);//falseconsole.log(0===false);//falseconsole.log(NaN===0);//falseconsole.log(0==="");//falseconsole.log(0n===0n);//trueconsole.log(0n===null);//falseconsole.log(undefined===0n);//falseconsole.log(0n===false);//falseconsole.log(NaN===0n);//falseconsole.log(0n==="");//falseconsole.log(null===null);//trueconsole.log(undefined===null);//falseconsole.log(null===false);//falseconsole.log(NaN===null);//falseconsole.log(null==="");//falseconsole.log("Thevalueundefined");console.log(undefined===undefined);//trueconsole.log(undefined===false);//falseconsole.log(undefined===NaN);//falseconsole.log(undefined==="");//falseconsole.log("Thebooleanfalse");console.log(false===false);//trueconsole.log(NaN===false);//falseconsole.log(false==="");//falseconsole.log("ThenumberNaN");console.log(NaN===NaN);//falseconsole.log(NaN==="");//falseconsole.log(""==="");//true

关于真值

JavaScript 中除了上面 7 种假值,剩下的都是真值,以下几种情况是容易被忽视的真值:

"false" : 字符串"false"

"0":字符串 "0"

[]:空数组

{}:空对象

function() {} :空函数

filter 使用

现在回到正题,可以使用数组实例的 filter 方法从数组中删除空元素。

constarray=[0,1,,2,,3,,3,a,4,,4,,5,6,NaN,false,0,-1];constfiltered=array.filter((item)=>{returnitem!==null&&typeofitem!=="undefined"&&item!=="";});console.log(filtered);//[0,1,2,3,3,'a',4,4,5,6,NaN,false,0,-1]

如果想删除所有虚假值包括 nullundefined0空字符串NaNfalse,上面的过滤条件可以直接将布尔函数传递给 filter ,如下:

constfiltered=array.filter(Boolean);console.log(filtered);//[1,2,3,3,'a',4,4,5,6,0,-1]

如果只想返回一个数字的数组,可以这样写:

constfiltered=array.filter(Number);console.log(filtered);//[1,2,3,3,4,4,5,6,-1]

上面返回数字的写法,从结果可以看出,0 被过滤掉了,因此上面只是实现了返回非 0 数字组成的数组,下面是获取数组所有数字的方法:

constfiltered=array.filter((item)=>typeofitem==="number"&&!isNaN(item));console.log(filtered);//[0,1,2,3,3,4,4,5,6,0,-1]

总结

通过从 JavaScript 中的数组中删除空元素,总结 JavaScript 中真值假值情况,在 ===== 条件下的比较结果。而对于空值的定义需要根据具体需求来定义边界,对于数字过滤或者判断,经常容易导致 0 的丢失。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/JavaScript/3900.html