有用的函数

75 阅读1分钟
  1. 使用场景,有一排按钮,不同条件显示不同的按钮,通过高阶函数返回新的函数,通过传入显示按钮的简称,用来控制显示的按钮,这样写的缘由时要明确每个条件对应哪些按钮
/**
 * 高价函数,返回一个新的排序数组
 * @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;
  };
}