如何使用javascript过滤器功能
How to use javascript filter function
我在chrome的控制台运行下面的代码。我想filteredArr包含3个对象,但我得到空{}作为第四个。其思想是通过flags数组进行过滤,并返回具有key == true(或=== true -不确定哪个有效)的对象,并将真键的值附加到filteredArr。任何帮助都是感激的!
var flags = [ { usa: ["red", "white", "blue"] }, null, { germany: ["red", "yellow", "black"] }, {}, { jamaica: ["green", "yellow", "black"] }, "", undefined];
var filteredArr = flags.filter(function(val) {
return !(val === "" || typeof val == "undefined" || val === null || typeof val == "null");
});
filteredArr;
首先,如果你想过滤假位,在Boolean
上过滤:
var filteredArr = flags.filter(Boolean)
产生与代码相同的结果,但更优雅。现在如果你想过滤没有可枚举键的对象你可以使用Object.keys:
var filteredArr = flags.filter(Boolean).
filter(function(el){ return Object.keys(el).length })
另外:
var filteredArr = flags.map(Object).
filter(function(x){ return Object.keys(x).length })
或者,平铺成一个过滤器:
var filtered = flags.filter(function(x){ return Object.keys(Object(x)).length })
空对象不为空。你需要检查一个对象是否为空,像这样:
Object.keys(obj).length === 0
相关文章:
- 添加文字和评论功能更新Div
- JavaScript打印功能使日历停止工作
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 如何防止网页加载后自动启动功能
- 除修剪外的其他功能
- 悬停功能触发器
- 为什么我的d3.jsselectAll+过滤器没有过滤
- 将IIFE的原始值存储在Angular中的监视功能(重置过滤器)中
- EXT JS : 数据存储过滤器功能不起作用
- 过滤器角度下拉功能取决于您之前选择的内容
- 如何在 ng-repeat中更新过滤器功能
- 访问过滤器功能内的变量
- AngularJS:过滤器更换时的触发功能
- 过滤器编号范围功能问题
- 控制器性能比较中的自定义过滤器与过滤器功能
- Angularjs过滤器的功能
- 如何使用javascript过滤器功能
- 未定义带有自动完成功能的角过滤器
- 过滤器功能在使用 Angular.js.and PHP 时无法按预期工作
- 简单的jQuery过滤器功能不能正常工作