javascript - 如何从JS数组中删除不同类型的空值(元素)

标签 javascript arrays filter is-empty

有一个数组

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 - 如何从JS数组中删除不同类型的空值(元素),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61799997/

相关文章:

javascript - 如何从对象数组中的嵌套数组中获取数组值的组合

arrays - Matlab:查找元胞数组中第一个字符出现的索引

Javascript 数组过滤器上的多个条件,无需 for 循环

JavaScript 转义数组的数组

javascript - 通过原型(prototype)javascript更改类所有元素的样式

javascript - 如何在 Vue.js 中按标题创建搜索过滤器?

javascript - 如何将对象传递给客户端 Javascript - NodeJS 和express

php - 如何从数组中删除不需要的值

java - 用于过滤/搜索的 Swing JTable 自定义

javascript - 如何在angularjs中按日期范围过滤数据?