/** * 对数组排序,不改变原数组 * @param {Array} arr 目标数组 * @param {string} valueName 对象数组中的某个值进行排序;填了此项时,flag必填 * @param {boolean} flag 不填或者true是从升序;false为降序; * @returns 返回排序后的新数组;flase:数组为空不是数组 * @example 对this.arr中每个对象的time属性进行降序排序 * const newArr = arrSort(oldArr,false,'time') * @author 李畅 * @email dotb116393@163.com */ export function arrSort(arr: Array, valueName: string, flag: boolean): Array | boolean { if (flag === undefined) flag = true // 判断是否是数组 if (isArray(arr)) { // 判断数组长度是否为0 if (arr.length !== 0) { let newArr = [] newArr = JSON.parse(JSON.stringify(arr)) as Array // 对属性排序 if (valueName) { if (flag) newArr.sort((a: any, b: any) => Date.parse(a[valueName]) - Date.parse(b[valueName])) else newArr.sort((a: any, b: any) => Date.parse(b[valueName]) - Date.parse(a[valueName])) } else { if (flag) newArr.sort((a: any, b: any) => a - b) else newArr.sort((a: any, b: any) => b - a) } return newArr } else { return false } } else { return false } } /** * 是否是数组 * @param target 目标 * @returns true||false */ export function isArray(target: unknown): boolean { return Array.isArray(target) }