例示:
// 示例用法
let data = [{
Id: 59,
title: 'title2'
},
{
Id: 38,
title: 'title1'
},
{
Id: 55,
title: 'title3'
}
];
let result = find(data).where({
"title": /\d$/
}).orderBy('Id', 'asc');
console.log(result)
结果:
[
{ userId: 38, title: 'title1' },
{ userId: 55, title: 'title3' },
{ userId: 59, title: 'title2' }
]
代码实现:
function find(data) {
let filterData = Array.isArray(data) ? data : [];
/**
* 条件 正则
*/
function where(condition) {
filterData = filterData.filter(itemData => {
for (let key in condition) {
if (!condition[key].test(itemData[key])) {
return false
}
}
return true
})
return this
};
function orderBy(key, order = 'desc') {
let orderObj = {
'asc': (a, b) => a[key] - b[key],
'desc': (a, b) => b[key] - a[key]
}
filterData.sort((a, b) => {
return orderObj[order](a, b)
})
return filterData
}
return {
where,
orderBy
}
}