JS数组过滤

本文讲解了JavaScript中的数组切片函数spArray用法,以及如何根据名称过滤对象数组和实现多条件筛选。通过实例展示了filterByName1函数和复杂条件筛选的实现,适合理解数组处理和数据过滤的开发者。
摘要由CSDN通过智能技术生成

每五个组成一个数组

 var spArray = function(N,Q)
            {
                var R = [],F;
                for (F = 0;F < Q.length;) {
                    R.push(Q.slice(F,F += N))
                }
                return R
            }
             
            var arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14];

console.log(spArray(5,arr))

根据一个数组 过滤出另一个数组

var aim = [
{name:‘Anne’, age: 23, gender:‘female’},
{name:‘Leila’, age: 16, gender:‘female’},
{name:‘Jay’, age: 19, gender:‘male’},
{name:‘Mark’, age: 40, gender:‘male’}
]
var nameArr=[‘Leila’,‘Jay’]
// 根据多个名字筛选
function filterByName1(aim, nameArr) {
let newArray = []
aim.forEach(item => { //遍历arr
//此处如果需要留下重复元素,则将!去掉即可
//arr中的元素如果在ids中不存在,则添加到新数组中
if (!nameArr.includes(item.name)) {
newArray.push(item);
};
})
return newArray
}

            console.log(filterByName1(aim,nameArr))

多条件过滤

     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(resultArr);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值