jAn*_*ndy 29 javascript arrays filter
在某些情况下,可能会发生我们在Array结构中具有undefined或通常为假值的情况.例如,从数据库或HTML结构等未知来源读取和填充数据时.喜欢
var data = [42, 21, undefined, 50, 40, undefined, 9]
Run Code Online (Sandbox Code Playgroud)
因为在循环这些数组并处理元素时可能会造成麻烦,删除undefined(伪造值)的最佳做法是什么?
jAn*_*ndy 69
在Array.prototype.filter这里使用可能是显而易见的.所以要删除我们可以调用的未定义值
var data = [42, 21, undefined, 50, 40, undefined, 9];
data = data.filter(function( element ) {
return element !== undefined;
});
Run Code Online (Sandbox Code Playgroud)
如果我们想要过滤掉所有的假值(例如0或null),我们可以使用return !!element;.
但是我们可以通过将Boolean构造函数或构造函数分别传递Number给.filter:
data = data.filter( Number );
Run Code Online (Sandbox Code Playgroud)
在这种情况下,这将完成工作,通常删除任何虚假值,我们会打电话
data = data.filter( Boolean );
Run Code Online (Sandbox Code Playgroud)
由于Boolean()构造函数返回true的truthy值和false任何falsy价值,这是一个非常整洁的选择.
小智 55
内联使用lambda
result.filter(item => item);
Run Code Online (Sandbox Code Playgroud)
Yan*_*ich 20
data.filter(Boolean)
Run Code Online (Sandbox Code Playgroud)
是最简短且可读的方法。
小智 14
ES6 单行
data.filter(e => e)
Run Code Online (Sandbox Code Playgroud)
Dio*_*ela 13
如果您有一组对象并想删除所有null和undefined项目:
[].filter(item => !!item);
Run Code Online (Sandbox Code Playgroud)
您可以使用lodash compact方法,该方法去除null,undefined并''
_.compact(data)
Run Code Online (Sandbox Code Playgroud)
小智 7
正如 Diogo Capela 所说,但其中 0 也没有被过滤掉。
[].filter(item => item !== undefined && item !== null)
Run Code Online (Sandbox Code Playgroud)
[NaN, undefined, null, 0, 1, 2, 2000, Infinity].filter(Boolean)
//[ 1, 2, 2000, Infinity ]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54824 次 |
| 最近记录: |