如何使用javascript过滤器功能

长谷134

我正在chrome的控制台中运行以下代码。我希望filteredArr包含3个对象,但是我将空{}作为第四个对象。这个想法是通过flags数组过滤并返回键== true(或=== 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;

本杰明·格伦鲍姆(Benjamin Gruenbaum)

首先,如果要过滤伪造的位,请在上进行过滤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 })

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章