首页 > 解决方案 > 循环时如何处理未定义

问题描述

[1, 3, 4, 5, 5, undefined, 4, 3, 4].map((item) => {
    if (item) {
        return item
    }
})

上面代码的输出是

在此处输入图像描述

为什么undefined也返回了,不应该被if循环停止吗?

标签: javascriptarraysundefined

解决方案


如果项目是虚假的,您的 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。


推荐阅读