首页 > 解决方案 > 如何从 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));

是否可以编写更少或更简单的条件?

标签: javascriptarraysfilteris-empty

解决方案


如果您有特定的变体,您可以尝试

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


推荐阅读