javascript - 从数组中删除未定义的值

标签 javascript arrays filter

在某些情况下,数组结构中可能会出现未定义或通常值。例如,从某些未知来源(例如数据库或 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/

相关文章:

javascript - JavaScript 中带有对象的 native 过滤器?

android - 类型安全 : Unchecked cast from Object to List<MyObject>

javascript - Backbone.js 全局错误处理

javascript - polymer 给我 "Uncaught SyntaxError: Unexpected token ("

javascript - 选择所有以下划线 (_) 开头的对象键

r - 使用 dplyr 基于大于日期时间的 POSIXct 日期和时间的子集数据框

javascript - 捕获未捕获( promise )的DOMException javascript

javascript - d3js 中力导向图像和标签布局中的不同图像尺寸

javascript - 将计数追加到javascript字符串数组中的重复项

带有 async/await 的 JavaScript 数组过滤器