element-plus 官方表格排序問(wèn)題小結(jié)
element-plus 官方API 默認(rèn)表格排序存在問(wèn)題,一個(gè)list 被多組排序

修改后:


<template>
<el-table
:data="stateTable.table.data"
@sort-change="(data) => handleSort(data, stateTable)"
>
</el-table>
<template>
<script setup>
import { reactive } from "vue";
import { copyTableData, handleSort } from "@/hooks/useSortTable.js";
let stateTable = reactive({
table: {
border: true,
currentPage: 1,
pageSize: 10,
// 接口返回?cái)?shù)據(jù)
data: [],
// 表頭數(shù)據(jù)
columns: [],
},
});
const getTableData = async (data) => {
copyTableData.value = [...stateTable.table.data]
};
getTableData()
</script>useSortTable.js
import { ref } from "vue";
export const copyTableData = ref([]);
export const sortByFieldDesc = (arr, field, order) => {
arr.sort((a, b) => {
const aValue = a?.[field];
const bValue = b?.[field];
let numA =
typeof aValue === "string" && !isNaN(Number(aValue))
? Number(aValue)
: aValue;
let numB =
typeof bValue === "string" && !isNaN(Number(bValue))
? Number(bValue)
: bValue;
if (
typeof numA === "string" &&
typeof numB === "string" &&
!isNaN(Date.parse(numA)) &&
!isNaN(Date.parse(numB))
) {
// 如果是日期類型的字符串,則按照日期排序
const dateA = new Date(numA);
const dateB = new Date(numB);
if (order === "descending") {
return dateB - dateA;
} else {
return dateA - dateB;
}
} else {
// 非日期類型,按照數(shù)字或其他類型的邏輯排序
if (order === "descending") {
return numB - numA;
} else {
return numA - numB;
}
}
});
return arr;
};
// 修改handleSort函數(shù),使其接受stateTable作為參數(shù)
export const handleSort = (data, stateTable) => {
const { prop, order } = data;
let reserveData = copyTableData.value.filter(
(item) =>
item?.[prop] !== undefined &&
item?.[prop] !== null &&
item?.[prop] !== "-"
);
let filterData = copyTableData.value.filter(
(item) =>
item?.[prop] === undefined ||
item?.[prop] === null ||
item?.[prop] === "-"
);
if (order !== null) {
sortByFieldDesc(reserveData, prop, order);
stateTable.table.data = reserveData.concat(filterData);
} else {
stateTable.table.data = [...copyTableData.value];
}
};到此這篇關(guān)于element-plus 官方表格排序問(wèn)題的文章就介紹到這了,更多相關(guān)element-plus 官方表格排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用JavaScript將JPG格式圖片轉(zhuǎn)為BMP格式的完整代碼
這篇文章主要介紹了如何使用JavaScript將JPG圖片轉(zhuǎn)換為BMP圖片,核心邏輯與PNG轉(zhuǎn)BMP一致,僅需調(diào)整文件選擇的accept類型,且JPG無(wú)Alpha通道,無(wú)需額外處理透明通道,提供了完整的代碼實(shí)現(xiàn),需要的朋友可以參考下2025-12-12
element-ui組件輸入框之放大鏡搜索圖標(biāo)問(wèn)題
這篇文章主要介紹了element-ui組件輸入框之放大鏡(搜索圖標(biāo))的相關(guān)知識(shí),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-11-11
javascript的回調(diào)函數(shù)應(yīng)用示例
回調(diào)函數(shù)就是一個(gè)通過(guò)函數(shù)指針調(diào)用的函數(shù)。下面以示例的方式為大家介紹下其具體的使用2014-02-02
JS WeakMap 詳細(xì)用法從基礎(chǔ)到實(shí)戰(zhàn)指南
WeakMap是JavaScript中的一個(gè)集合類型,類似于普通的Map,但鍵必須是對(duì)象,當(dāng)鍵對(duì)象不再被引用時(shí),WeakMap會(huì)自動(dòng)將其從集合中刪除,有助于垃圾回收機(jī)制回收內(nèi)存,WeakMap中的鍵是不可以被枚舉的,文章總結(jié)了WeakMap的核心特法、應(yīng)用場(chǎng)景和與Map的區(qū)別,感興趣的朋友一起看看吧2026-05-05
基于BootStrap Metronic開(kāi)發(fā)框架經(jīng)驗(yàn)小結(jié)【八】框架功能總體界面介紹
這篇文章主要介紹了基于BootStrap Metronic開(kāi)發(fā)框架經(jīng)驗(yàn)小結(jié)【八】框架功能總體界面介紹 的相關(guān)資料,需要的朋友可以參考下2016-05-05
深入理解JavaScript中的宏任務(wù)和微任務(wù)機(jī)制
JavaScript中的任務(wù)分為宏任務(wù)和微任務(wù),它們的執(zhí)行順序會(huì)影響代碼的執(zhí)行結(jié)果。了解它們的機(jī)制可以幫助我們更好地理解事件循環(huán)和異步編程,避免出現(xiàn)一些意想不到的錯(cuò)誤2023-05-05

