// 搜索过滤 val:传入值, list:列表数组, key:对比字段, filterIndex:过滤开始的索引
export function dataFilter(val, list, key, filterIndex) {
filterIndex = filterIndex >= 0 ? filterIndex : 0
if (val != '') {
const or = /[A-Za-z]+$/
const arr = list
let searchKey = val
if (or.test(searchKey)) {
searchKey = searchKey.toUpperCase()
}
searchKey = searchKey.toString()
const len = searchKey.length
let isTopFilter = false
const allFilterList = []
const newList = arr.filter((item) => {
let items = item[key]
if (or.test(items)) {
items = items.toUpperCase()
}
for (let index = 0; index < items.length; index++) { // 全局过滤
let newItems = items
newItems = newItems.substring(index, index + len)
if (newItems == searchKey) {
allFilterList.push(item)
}
}
if (filterIndex >= 0) { // 开头过滤
items = items.toString().substring(filterIndex, filterIndex + len)
if (items == searchKey) {
isTopFilter = true
return item
}
}
})
if (!isTopFilter) {
return allFilterList
}
return newList
} else {
// val不存在还原数组
return list
}
}