Elements-SY

modify

......@@ -454,3 +454,63 @@ export function restTableHeight($refs) {
let topHeaderClientHeight = document.querySelector(".headerRef").clientHeight;
return heigth + topHeaderClientHeight;
}
/**
* Array Json去重 & 排序
* @param {Array} arr
* @param {string || Object} keys
* @description 对数组中指定的JSON字段去重和指定的字段进行排序
* @example
* 当指定一个字段去重时:removeDuplicates(arr, "flightRoute")
* 当指定一个字段去重并且排序如下:
* const result = removeDuplicates(arr, {
* duplicate: "flightRoute", // 去重字段
* sortType: "Number", // 排序类型:number、string
* sortAttr: "routePriority", // 排序字段
* })
*/
export function removeDuplicates(arr, keys) {
const dict = {};
const result = {
repeat: [],
unique: [],
};
let duplicate = keys;
if (typeof keys == "object") {
duplicate = keys.duplicate;
}
// 去重
result.unique = arr.reduce((res, currentValue) => {
if (!dict[currentValue[duplicate]]) {
dict[currentValue[duplicate]] = true;
res.push(currentValue);
} else {
result.repeat.push(currentValue);
}
return res;
}, []);
// 返回去重结果
if (typeof keys == "string") return result;
// 排序
if (typeof keys == "object") {
if (keys.sortType.toLowerCase().trim() == "number") {
if (result.repeat.length) {
result.repeat = sortFn("repeat");
}
if (result.unique.length) {
result.unique = sortFn("unique");
}
return result;
}
}
// 排序方法
function sortFn(attr) {
if (isNaN(Number(result[attr][0][keys.sortAttr]))) {
return result[attr].sort((a, b) =>
a[keys.sortAttr].localeCompare(b[keys.sortAttr])
); // 按字母排序
} else {
return result[attr].sort((a, b) => a[keys.sortAttr] - b[keys.sortAttr]); // 按数字排序
}
}
}
......