封装了一些use函数

81 阅读1分钟

目录

1.useSort

/**
 * 按照一维数组顺序给二维数组排序
 */
type Item = {};
export default function useSort(array: Item[], arraySort: string[], key: { label: string }) {
    // 创建一个映射,用于存储每个名称的索引,提高查找效率
    const indexMap = new Map<string, number>();
    arraySort.forEach((item, index) => {
        indexMap.set(item, index);
    });
    let keyIndex = key.label;
    array.sort((a: any, b: any) => {
        const aIndex = indexMap.get(a[keyIndex]) ?? Infinity; // 如果找不到,则赋值为Infinity
        const bIndex = indexMap.get(b[keyIndex]) ?? Infinity;
        return aIndex - bIndex;
    });
    return [array];
}
使用方式
  const data: any = [
    { name: '狗牙', age: 3, sex: '女', hobby: '踢足球' },
    { name: 'Silly', age: 2, sex: '女', hobby: '打篮球' },
    { name: '狗老大', age: 2, sex: '女', hobby: '打篮球' },
    { name: 'Tom', age: 2, sex: '女', hobby: '打篮球' },
    { name: 'Lily', age: 2, sex: '女', hobby: '打篮球' },
  ]
  const arraySort: any = ['狗老大', '狗牙', 'Lily', 'Tom', 'Silly']

  const [array] = useSort(data, arraySort, { label: 'name' })