循环时如何处理未定义
how is undefined treated while looping
[1, 3, 4, 5, 5, undefined, 4, 3, 4].map((item) => {
if (item) {
return item
}
})
以上代码的输出为
为什么undefined
也返回了,不应该被if
循环停止了吗?
如果项目是虚假的,您的地图函数不会 return 任何明确的内容,因此它 returns 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
无论如何都会在 return 上调用 ToBoolean
。它仍然会过滤掉任何 falsy 值,例如0.
[1, 3, 4, 5, 5, undefined, 4, 3, 4].map((item) => {
if (item) {
return item
}
})
以上代码的输出为
为什么undefined
也返回了,不应该被if
循环停止了吗?
如果项目是虚假的,您的地图函数不会 return 任何明确的内容,因此它 returns 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
无论如何都会在 return 上调用 ToBoolean
。它仍然会过滤掉任何 falsy 值,例如0.