如何使用javascript过滤器功能

How to use javascript filter function

本文关键字:功能 过滤器 javascript 何使用      更新时间:2023-09-26

我在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