javascript - 循环时如何处理未定义
问题描述
[1, 3, 4, 5, 5, undefined, 4, 3, 4].map((item) => {
if (item) {
return item
}
})
上面代码的输出是
为什么undefined
也返回了,不应该被if
循环停止吗?
解决方案
如果项目是虚假的,您的 map 函数不会显式返回任何内容,因此它会返回undefined
(默认情况下)。
正如另一条评论指出的那样,您可能正在寻找Array.prototype.filter
:
console.log([1,3,4,5,5,undefined,4,3,4].filter((item)=>{
if(item){
return item;
}
}));
请注意,以上内容稍微冗长,.filter(x => x)
就足够了,无论如何都filter
调用ToBoolean
返回。它仍然会过滤掉任何虚假值,例如 0。
推荐阅读
- swift - 快速单元测试异步函数
- javascript - 使用 Javascript 发送电子邮件(不是表单)
- javascript - 将多条路由指向同一个组件
- mysql - 如何制作更好的单列表模型?
- cassandra - Cassandra 如何处理磁盘空间不足的问题?
- sql - 当需要插入的唯一 id 时,对同一个表具有三个不同的触发器
- react-native - 在图像组件源中使用时 require 的性能
- javascript - 通过 javascript sdk 查询 microsoft graph 时出现 400 错误
- php - 将内爆字符串转换为整数变量 PHP
- ios - iPhone 可以在没有 Watch 应用的情况下从 Watch 中检索加速度计数据吗?