项目需求

在实际项目开发中,对二维数组的筛选一般是在后端进行,但有时前端也需要对数据进行过滤、筛选和清洗。本次项目的实际生产环境是对百度离线地图的数据进行筛选,减少后台的开发量

被筛选数组

//被筛选数组
var data = [
{"name": "《西游记》", "author": "吴承恩", "cat": "A级书刊"},
{"name": "《三国演义》", "author": "罗贯中", "cat": "A级书刊"},
{"name": "《红楼梦》", "author": "曹雪芹", "cat": "A级书刊"}
];

单击事件

//单击事件
$(function () {
$("#btn").click(function () {
var name = "西游记";
var author = "吴承恩";
console.log(filterData(data, name, author))
})
})

数据筛选

在CSDN找到更多的是对二维数据的“精确匹配筛选”,主要采用的是js数组的过滤函数进行操作。但是出于对项目的灵活性,还是推荐“模糊匹配”。

精确筛选

//筛选条件封装函数-精确匹配;
function filterData(data, name, author) {
return data.filter(item => item.name == name || item.author == author)
}

模糊匹配

//筛选条件封装函数-模糊匹配;
function getProbably(list, keyWord) {
var arr = [];
for (var i = 0; i < list.length; i++) {
//将JSON对象转为字符串后进行匹配筛选,如果字符串中不包含目标字符会返回-1;
if (JSON.stringify(list[i]).indexOf(keyWord) >= 0) {
arr.push(list[i]);
}
}
return arr;
}

lockdatav Done!