ben*_*nek 10 javascript arrays
为什么以下过滤器不返回0?
[0, 5, 4].sort().filter(function(i){return i}) // returns : [4, 5]
Run Code Online (Sandbox Code Playgroud)
filter是检查条件.您正在返回值本身,这不是正确的用法.对此应该是
[0, 5, 4].sort().filter(function(i){return true;}); //[0,4,5] is returned
Run Code Online (Sandbox Code Playgroud)
当你自己传递值时,所有非零数字等于truthy,0等于falsy值,因此被过滤器忽略.如果你仍然想坚持这种方式,由于某种原因,将0括在引号内,这将解决问题.
[0, 5, 4].sort().filter(function(i){return i==0?'0':i;}) //[0,4,5] is returned
Run Code Online (Sandbox Code Playgroud)
.filter()
默认情况下,函数会从过滤后的输出中排除虚假项目.
// ----- falsy items in JS --------
false
null
undefined
0
NaN
'' //Empty string
Run Code Online (Sandbox Code Playgroud)
方案:
如果您仍想保留它们,请记住以下简短提示:
true
以保留元素,false
否则.示例:
[0, 5, 4].sort().filter(function(i){
return true // returning true to keep i element
});
Run Code Online (Sandbox Code Playgroud)
要保持0,但仍过滤掉虚假值,请尝试以下操作:
[0, 5, undefined, 4, null, 7, NaN, -4].sort().filter(function(item){
return item || item === 0;
});
Run Code Online (Sandbox Code Playgroud)
编辑:用 ES2015 箭头函数重构
[0, 5, undefined, 4, null, 7, NaN, -4].sort().filter(item => item || item === 0);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4022 次 |
最近记录: |