在某些情况下,数组结构中可能会出现未定义
或通常假值。例如,从某些未知来源(例如数据库或 HTML 结构)读取和填充数据时。喜欢
var data = [42, 21, undefined, 50, 40, undefined, 9]
由于在循环此类数组并处理元素时可能会导致麻烦,因此删除 undefined
(虚假值)的最佳实践是什么?
最佳答案
在这里使用Array.prototype.filter
可能是显而易见的。因此,要仅删除未定义的值,我们可以调用
var data = [42, 21, undefined, 50, 40, undefined, 9];
data = data.filter(function( element ) {
return element !== undefined;
});
如果我们想过滤掉所有虚假值(例如 0 或 null),我们可以使用 return !!element;
来代替。
但是我们可以做得更优雅一点,只需将 Boolean
构造函数和 Number
构造函数分别传递给 .filter
:
data = data.filter( Number );
在这种情况下,这可以完成工作,通常删除任何虚假值,我们会调用
data = data.filter( Boolean );
<小时/>
由于 Boolean()
构造函数对 true 值返回 true
,对任何 falsy 值返回 false
值,这是一个非常巧妙的选择。
关于javascript - 从数组中删除未定义的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28607451/