首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查javascript中的falsy值

检查javascript中的falsy值
EN

Stack Overflow用户
提问于 2019-11-26 15:25:41
回答 2查看 224关注 0票数 0

我想从数组中删除带有falsy值的元素,但是我的代码没有这样做。我想知道为什么我的代码不能工作。这是代码

代码语言:javascript
复制
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]

EN

回答 2

Stack Overflow用户

发布于 2019-11-26 15:28:50

代码语言:javascript
复制
g.filter(Boolean);

应该足以解决你的问题。

如果您使用任何值调用Boolean的构造函数,它将将它们转换为布尔值,因此所有真实值都将被筛选器接受。

使用.filter将从原始数组g创建一个新数组,但只保留真实的值。

这实际上是我到目前为止发现的更简洁的方法,但它完全等同于下面的方法。

代码语言:javascript
复制
g.filter(el => el);

因为表达式将隐式地将元素转换为布尔值。

票数 1
EN

Stack Overflow用户

发布于 2019-11-26 15:30:55

您可以使用过滤器

filter()方法创建一个新数组,其中包含所有通过所提供函数实现的测试的元素。

代码语言:javascript
复制
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]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59054167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档