js Array.filter( ) 实现前端多条件筛选

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>

    <body>
        <script type="text/javascript">
            window.onload = function() {
                let arr = [{
                        name: "q1121",
                        age: 12,
                        address: "辽宁大连1"
                    },
                    {
                        name: "q44",
                        age: 12,
                        address: "辽宁大连4"
                    },
                    {
                        name: "q55",
                        age: 12,
                        address: "辽宁大连5"
                    },
                    {
                        name: "q222",
                        age: 13,
                        address: "辽宁大连2"
                    },
                    {
                        name: "q332",
                        age: 12,
                        address: "辽宁沈阳1"
                    }
                ];
                //筛选条件
                let filter = {
                    name: "",
                    age: 12,
                    address: "辽宁",
                };
                //拿到有值的参数
                let tempFilter = {};
                for(key in filter) {
                    if(typeof(filter[key]) != "undefined" && typeof(filter[key]) != "null" && filter[key] != null && filter[key] != "") {
                        tempFilter[key] = filter[key];
                    }
                }
                //筛选
                let resultArr = arr.filter(
                    (item) => {
                        let flag = false;
                        for(key in tempFilter) {
                            if(item[key].toString().indexOf(tempFilter[key].toString()) >= 0) {
                                flag = true;
                            } else {
                                flag = false;
                                break;
                            }
                        }
                        if(flag) {
                            return item;
                        }
                    }
                );
                console.log(JSON.stringify(resultArr));
                //[
                //    {"name":"q1121","age":12,"address":"辽宁大连1"},
                //    {"name":"q44","age":12,"address":"辽宁大连4"},
                //    {"name":"q55","age":12,"address":"辽宁大连5"},
                //    {"name":"q332","age":12,"address":"辽宁沈阳1"}
                //]
            }
        </script>
    </body>

</html>
————————————————
版权声明:本文为CSDN博主「quyunde」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/quyunde/article/details/90080814

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值