- 使用场景,有一排按钮,不同条件显示不同的按钮,通过高阶函数返回新的函数,通过传入显示按钮的简称,用来控制显示的按钮,这样写的缘由时要明确每个条件对应哪些按钮
/**
* 高价函数,返回一个新的排序数组
* @param allArr array 全部数据
* @param name string allArr中元素内容的属性名
* @returns
*/
// 使用举例
// let diyFilter = createToFilter(
// [
// { name: "edit", label: "修改" },
// { name: "start", label: "启用" },
// { name: "import", label: "导入" }
// ],
// "name"
// )
// let sourceArr=[]
// diyFilter(["import", "edit"], sourceArr)
function createToFilter(allArr, name) {
const obj = {}
allArr.forEach(element => {
obj[element[name]] = element
})
return function(sortKeyArr, sourceArr) {
sortKeyArr = sortKeyArr || []
sourceArr = sourceArr || []
const sortArr = sortKeyArr.map(key => {
return obj[key]
})
const length = sourceArr.length || 0
sourceArr.splice(0, length, ...sortArr)
return sourceArr
}
}