javascript - 如何从 JS 数组中删除不同类型的空值(元素)
问题描述
有一个数组
const arr = [1, 'abc', [], ['John'], {}, {name: 'Smith'}, null, 0];
如何获取没有空值的新数组?(空数组和空对象也算作空值)。
我的变体似乎有点硬编码:
const newArr = arr.filter(elem =>
(elem && Object.keys(elem).length !== 0)
|| (typeof(elem) == 'number' && elem !== 0));
是否可以编写更少或更简单的条件?
解决方案
如果您有特定的变体,您可以尝试
const emptyVariants = ['', 0, null,] // all expected variants
const newArr = arr.filter(elem => !emptyVariants.includes(elem);
您可以尝试的另一种方法是使用!=
,但它采用所有虚假值
const newArr = arr.filter(elem => (elem != null));
有关更多信息!=
,请参阅==
运算符https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators
推荐阅读
- javascript - 当在 React 中使用路由并路由无状态函数时,没有渲染
- node.js - 在 expressjwt 中将变量绑定到异步
- python - sklearn 树可视化中的这些列表是什么
- c# - 如何使用 LINQ 填充对象的属性并返回集合
- java - 请调整文件大小
- c++ - 为什么不允许成员函数的模板特化?
- amazon-web-services - S3 的私有内容 CORS 问题
- sql - Postgresql SQL 根据表 2 中的条件从表 1 中选择项目
- oracle - 无法使用 SID 连接到 oracle 数据库
- google-apps-script - 从 Docs 表格中的已识别单元格获取图像 URL 并替换为图像