通过检查多个条件的 Javascript 数组过滤器

标签 javascript arrays

我有一个数组:

var arr = 
[
    {
        "id":3,
        "first_name":"Laila",
        "last_name":"McCaine",
        "gender":"female",      
        "populations":[{"population_name":"Heart failure"}, {"population_name":"AMI"}],
        "score": 55.0
    },
    {
        "id":5,     
        "first_name":"Riva",
        "last_name":"Rontgen",
        "gender":"female",
        "populations":[{"population_name":"Pnumonia"}],
        "score": 85.0
    },
    {
        "id":8,
        "first_name":"Emily",   
        "last_name":"Rosewood",
        "gender":"female",  
        "populations":[],
        "score": 25.0
    }
];

和变量:

var score='';
var population='';
var status = '';

我想在 条件下使用数组 filter 函数,例如 获取 score 小于 40、status = 1 且 population_name 为“心力衰竭”的记录。

问题是,给定 3 个变量是 dynamic 并且如果其值为 '',则不应应用 filter

我怎样才能做到这一点?

最佳答案

像这样:

arr.filter(function(item) {
    var ok = true;

    if (score !== '') {
        ok = item.score < score;
    }

    if (ok && population !== '') {
        // check it
        ok = item.populations.map(function() {return item.population_name;}).indexOf(population) > -1;
    }

    if (ok && status !== '') {
        // check status
    }

    return ok;
});

关于通过检查多个条件的 Javascript 数组过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36889430/

相关文章:

javascript - 表格行中的 CSS 样式问题

javascript - 使用导出模块将多个参数传递给 NodeJS 回调

javascript - 用 pako(javascript 中的 zlib)压缩,用 zlib(python)解压不起作用

javascript - 如何禁用大表单中的特定表单元素

objective-c - 将 NSArray 转换为 char** 并返回 c 数组

Ruby - 如果数组中的元素包含某个字符,则返回关联的元素

javascript - 打印山脉算法

javascript - 读取 JSON 数据并循环遍历它

javascript - 使用字段名称创建新的 Javascript 数组

javascript - 检查输入是否对应于 1 个数组值