有一个数组
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/