场景:有多个输入框,输入一个及以上的条件,实现数据过滤。
let data = [ {
name: '名侦探柯南',
price: 13,
num:108,
hot:0,
status:1
}, {
name: '大侦探皮卡丘',
price: 13,
num:151,
hot:1,
status:0
}, {
name: '绿皮书',
price: 13,
num:72,
hot:1,
status:1
} ]
//@param condition 过滤条件
//@param data 需要过滤的数据
let filter=(condition,data)=>{
return data.filter( item => {
return Object.keys( condition ).every( key => {
return String( item[ key ] ).toLowerCase().includes(
String( condition[ key ] ).trim().toLowerCase() )
} )
} )
}
//无条件
var condition={name:'',hot:''};
var aa = filter(condition,data);
console.log(aa);// [{"name":"名侦探柯南","price":13,"num":108,"hot":0,"status":1},{"name":"大侦探皮卡丘","price":13,"num":151,"hot":1,"status":0},{"name":"绿皮书","price":13,"num":72,"hot":1,"status":1}]
//单条件
var condition={name:'侦探'};
var bb = filter(condition,data);
console.log(bb);// [{"name":"名侦探柯南","price":13,"num":108,"hot":0,"status":1},{"name":"大侦探皮卡丘","price":13,"num":151,"hot":1,"status":0}]
//多条件
var condition={name:'侦探',hot:'1'};
var cc = filter(condition,data);
console.log(cc);//[{"name":"大侦探皮卡丘","price":13,"num":151,"hot":1,"status":0}]