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

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

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

关于空值

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

关于假值 Falsy

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

  1. 数字 0-0:数字 0-0
  2. BigInt 0n  -0n  :在 BigInt 零和负 BigInt 零
  3. null
  4. undefined
  5. false
  6. NaN
  7. 空字符串 "" : 空字符串值。

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

console.log(0==0) // true
console.log(0==0n) // true
console.log(0==null) // false
console.log(0==undefined) // false
console.log(0==false) // true
console.log(0==NaN) // false
console.log(0=="") // true
console.log("The BigInt 0n")
console.log(0n==0n) // true
console.log(0n==null) // false
console.log(0n==undefined) // false
console.log(0n==false) // true
console.log(0n==NaN) // false
console.log(0n=="") // true
console.log("The value null")
console.log(null==null) // true
console.log(null==undefined) // true
console.log(null==false) // false
console.log(null==NaN) // false
console.log(null=="") // false
console.log("The value undefined")
console.log(undefined==undefined) // true
console.log(undefined==false) // false
console.log(undefined==NaN) // false
console.log(undefined=="") // false
console.log("The boolean false")
console.log(false==false) // true
console.log(false==NaN) // false
console.log(false=="") // true
console.log("The number NaN")
console.log(NaN==NaN) // false
console.log(NaN=="") // false
console.log(""=="") // true

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

console.log(0 === 0); // true
console.log(0 === 0n); // false
console.log(0 === null); // false
console.log(undefined === 0); // false
console.log(0 === false); // false
console.log(NaN === 0); // false
console.log(0 === ""); // false
console.log(0n === 0n); // true
console.log(0n === null); // false
console.log(undefined === 0n); // false
console.log(0n === false); // false
console.log(NaN === 0n); // false
console.log(0n === ""); // false
console.log(null === null); // true
console.log(undefined === null); // false
console.log(null === false); // false
console.log(NaN === null); // false
console.log(null === ""); // false
console.log("The value undefined");
console.log(undefined === undefined); // true
console.log(undefined === false); // false
console.log(undefined === NaN); // false
console.log(undefined === ""); // false
console.log("The boolean false");
console.log(false === false); // true
console.log(NaN === false); // false
console.log(false === ""); // false
console.log("The number NaN");
console.log(NaN === NaN); // false
console.log(NaN === ""); // false
console.log("" === ""); // true

关于真值

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

  1. "false" : 字符串 "false"
  2. "0":字符串 "0"
  3. []:空数组
  4. {}:空对象
  5. function() {} :空函数

filter 使用

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

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

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

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

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

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

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

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

总结

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


相关文章
|
10月前
|
JavaScript 算法 开发者
如何用JS实现在网页上通过鼠标移动批量选择元素的效果?
本文介绍了类似电脑桌面通过鼠标选择多个图标的实现原理。主要通过监听mousedown、mousemove和mouseup事件,动态调整选择框大小并计算与元素的重叠情况。提供了角重叠和相交重叠的检测方法,并附有示例代码和在线演示链接,方便开发者参考与测试。
359 56
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
426 1
|
11月前
|
JavaScript 前端开发 API
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
11月前
|
移动开发 运维 供应链
通过array.some()实现权限检查、表单验证、库存管理、内容审查和数据处理;js数组元素检查的方法,some()的使用详解,array.some与array.every的区别(附实际应用代码)
array.some()可以用来权限检查、表单验证、库存管理、内容审查和数据处理等数据校验工作,核心在于利用其短路机制,速度更快,节约性能。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
11月前
|
供应链 JavaScript 前端开发
通过array.every()实现数据验证、权限检查和一致性检查;js数组元素检查的方法,every()的使用详解,array.some与array.every的区别(附实际应用代码)
array.every()可以用来数据验证、权限检查、一致性检查等数据校验工作,核心在于利用其短路机制,速度更快,节约性能。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
11月前
|
数据采集 JavaScript 前端开发
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
用array.filter()来实现数据筛选、数据清洗和链式调用,相对于for循环更加清晰,语义化强,能显著提升代码的可读性和可维护性。博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
JavaScript 前端开发 开发者
.js的dom元素操作
【10月更文挑战第29天】通过灵活运用这些 DOM 元素操作方法,JavaScript 可以实现丰富的网页交互效果,如动态更新页面内容、响应用户操作、创建和删除页面元素等。在实际开发中,开发者可以根据具体的需求和场景,选择合适的 DOM 元素操作方法来实现所需的功能,为用户提供更加流畅和动态的网页体验。
|
移动开发 JavaScript 前端开发
原生js如何获取dom元素的自定义属性
原生js如何获取dom元素的自定义属性
579 4
|
自然语言处理 前端开发 JavaScript
🛠️ JavaScript数组操作指南:20个精通必备技巧🚀
本文详细介绍了 JavaScript 中的 20 个高效数组操作技巧,涵盖了从基本的添加、移除元素,到数组转换和去重等高级操作。强调了不可变性的重要性,提供了清晰的代码示例,帮助开发者编写更整洁和高效的代码。无论是新手还是经验丰富的开发者,这些技巧都将显著提升您的编码能力,使您在项目中更具竞争力。
300 2
|
JavaScript
js删除数组中已知下标的元素
js删除数组中已知下标的元素
467 4

热门文章

最新文章