Vig*_*esh 57 javascript arrays
我想从数组中删除所有的虚假值.JavaScript中的Falsy值为false,null,0,"",undefined和NaN.
function bouncer(arr) {
arr = arr.filter(function (n) {
return (n !== undefined && n !== null && n !== false && n !== 0 && n !== "" && isNaN()!=NaN); });
return arr;
}
bouncer([7, "ate", "", false, 9, NaN], "");
Run Code Online (Sandbox Code Playgroud)
除NaN测试用例外,以上所有人都满意.有人可以帮我检查数组是否包含NaN吗?
Lor*_*sum 121
你可以使用布尔值:
var myFilterArray = myArray.filter(Boolean);
Run Code Online (Sandbox Code Playgroud)
Poi*_*nty 53
既然你想摆脱"虚假"的价值观,那就让JavaScript做点儿吧:
function bouncer(arr) {
return arr.filter(function(v) { return !!v; });
}
Run Code Online (Sandbox Code Playgroud)
!运算符的双重应用 将使true值为"truthy"并且false当它为"falsy" 时返回过滤器回调.
(你的代码正在调用isNaN()但没有传递给它一个值;这就是为什么那个测试对你不起作用.如果它的参数被强制转换为数字,则该isNaN()函数返回,否则.)trueNaNfalse
编辑 - 请注意
function bouncer(arr) {
return arr.filter(Boolean);
}
Run Code Online (Sandbox Code Playgroud)
LoremIpsum会在另一个答案中注意到,因为内置的布尔构造函数几乎完全相同!!.
J__*_*J__ 22
truthyArray = arr.filter(el => el)
Run Code Online (Sandbox Code Playgroud)
你就是这样做的
你isNaN()以错误的方式使用.应该是这样的事情:
function bouncer(arr) {
return arr.filter(function (n) {
return n !== undefined && n !== null && n !== false && n !== 0 && n !== "" && !isNaN(n);
});
Run Code Online (Sandbox Code Playgroud)
}
你也可以重写它:
function bouncer( arr ){
return arr.filter( function( value ){
return value;
});
}
Run Code Online (Sandbox Code Playgroud)
这是另一个等效但说明性的解决方案:
function bouncer( arr ){
return arr.filter( function( value ){
return value ? true : false;
});
}
Run Code Online (Sandbox Code Playgroud)
此代码示例具有说明性,因为它向读者指示变量value将被评估为 true 或 falsey,并且匿名函数将返回一个布尔值,或者true或false,映射到 的评估value。
对于不熟悉这种根据真实性从数组中删除值的方法的人,或者对于不熟悉(或尚未阅读相关文档)该函数的人来说filter,这个示例是最简洁的,仍然传达了函数的行为filter。
当然,在您的应用程序中,您可以选择更简洁但缺乏洞察力的实现:
function bouncer( arr ){
return arr.filter( function( value ){
return value;
});
}
Run Code Online (Sandbox Code Playgroud)
使用过滤器我们可以写
function bouncer(arr) {
return arr.filter(item => item);
}
bouncer([false, null, 0, NaN, undefined, ""]) // will return [].
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26291 次 |
| 最近记录: |