单条件多数据筛选:1、数据量大的情况,通常都调用的后台接品。2、数据量不大的情况,可以一次性拿到所有数据,然后根据条件筛选。3、多条件复合筛选,数组的filter方法就能够满足需求。
一、单数组示例:
var str =[1,2,3,4,5,6,7,8,9]
var result = str.filter(item=> item.<6)
console.log(result)
输出结果:[1,2,3,4,5]
二、二维数组示列:
var aim = [
{id:1,name:'小二', age: 20,status:0},
{id:2,name:'小三', age: 21,status:0},
{id:3,name:'小四', age: 22,status:0},
{id:4,name:'小五', age: 23,status:1}
]
var result = aim.filter(item=> item.id<3)
console.log(result)
输出结果
0: {id: 1, name: "小二"}
1: {id: 2, name: "小三"}
三、筛选需求:
1、数据量大的情况,通常都调用的后台接品。
2、数据量不大的情况,可以一次性拿到所有数据,然后根据条件筛选。
3、多条件复合筛选,数组的filter方法就能够满足需求
// 这个是例子中的被筛选数组
var aim = [
{id:1,name:'小二', age: 20,status:0},
{id:2,name:'小三', age: 21,status:0},
{id:3,name:'小四', age: 22,status:0},
{id:4,name:'小五', age: 23,status:1}
]
单条件单数据筛选:用filter方法,判断 status =1即可
function filterByName(aim) {
return aim.filter(item => item.status == 1)
}
输出[{id:4,name:'小五', age: 23,status:1}]
单条件多数据筛选:根据多个名字筛选,这里是用for循环遍历目标数组,然后用find方法找到后push到结果数组里,用find方法是重名情况下也能得到想要的结果。for循环可以用数组的一些遍历方法替代,代码可以更简化,示例就是大概表达个意思。【根据多个名字筛选】
function filterByName1(aim, nameArr) {
let result = []
for(let i = 0; i < nameArr.length; i++) {
result.push(aim.find(item => item.name = nameArr[i]))
}
return result
}
console.log(filterByName1(aim,['小三','小四']))
//输出结堁:[{id:2,name:'小三', age: 21,status:0},{id:3,name:'小四', age: 22,status:0},]
多条件单数据筛选:根据单个名字或者单个年龄筛选,用filter方法,判断条件之间是或的关系。【根据年龄和数据状态status筛选】
function filterByName2(aim, age) {
return aim.filter(item => item.age > 21 || item.status == 1)
}
输出结果:{id:4,name:'小五', age: 23,status:1}