我想从数组中删除带有falsy值的元素,但是我的代码没有这样做。我想知道为什么我的代码不能工作。这是代码
let g= [7, null, "ate", "", false, true, 9];
g.forEach((cur,ind,arr) => {
if (!cur) {
arr.splice(ind,1);
}
});
console.log(g);
这是输出
[7, "ate", false, true, 9]
发布于 2019-11-26 15:28:50
g.filter(Boolean);应该足以解决你的问题。
如果您使用任何值调用Boolean的构造函数,它将将它们转换为布尔值,因此所有真实值都将被筛选器接受。
使用.filter将从原始数组g创建一个新数组,但只保留真实的值。
这实际上是我到目前为止发现的更简洁的方法,但它完全等同于下面的方法。
g.filter(el => el);因为表达式将隐式地将元素转换为布尔值。
发布于 2019-11-26 15:30:55
您可以使用过滤器
filter()方法创建一个新数组,其中包含所有通过所提供函数实现的测试的元素。
const result = g.filter(val => val);
//or if you want to be superfluous like me
const result = g.filter(val => !!val);
// output [7, "ate", true, 9]https://stackoverflow.com/questions/59054167
复制相似问题