“返回”;空";“来自Javascript的值”;“过滤器”;功能
假设我有以下数组:“返回”;空";“来自Javascript的值”;“过滤器”;功能,javascript,arrays,Javascript,Arrays,假设我有以下数组:arr=[1,2,0,null,4],我想过滤数组中的所有“0”。 一个示例代码是: arr.filter((val) => {return val !== 0}) //>> [1, 2, null, 4] 它很好用。但如果改用if语句,则不会返回“null”值: arr.filter((val) => {if(val !== 0) return val}) //>> [1, 2, 4] 仅当我返回包含“值”的数组时,它才起作用: 有人能
arr=[1,2,0,null,4]
,我想过滤数组中的所有“0”。
一个示例代码是:
arr.filter((val) => {return val !== 0})
//>> [1, 2, null, 4]
它很好用。但如果改用if语句,则不会返回“null”值:
arr.filter((val) => {if(val !== 0) return val})
//>> [1, 2, 4]
仅当我返回包含“值”的数组时,它才起作用:
有人能解释为什么在使用if语句时,只有在数组中才返回“null”吗 如果从
过滤器
回调返回的值为truthy,则结果数组中将包含一个项
return val !== 0
如果val
为0,则返回false
,否则返回true
if(val !== 0) return val
如果val
为0
,则返回undefined
,否则返回val
。因此,如果val
不是0
,但仍然是错误的(如null
),则它不会包含在结果中
但是数组总是真实的(不管它们包含什么值),所以
将始终导致最终数组中包含非0
值
console.log(布尔值(null));
log(布尔值([null])代码>Well应该返回true或false
您没有返回真或假。因此,它将您的项转换为布尔值
所以null是错误的,数组是真实的。过滤器应该返回true或false…哦,我误解了过滤器的行为。现在清楚了,谢谢!
if(val !== 0) return val
if(val !== 0) return [val]}