2026-03-26 22:35:00
要实现异步获取数据的相邻数据展示排序,核心在于对异步加载的数据按指定字段进行多级排序。以下是具体实现方法和代码示例:
核心实现步骤先按主字段(如appeal_type)排序
再按次字段(如detail_appeal_type)排序
排序稳定性:
现代JS引擎的sort()是稳定排序,相同主字段值的元素会保持原始相对顺序
如需严格稳定排序,建议使用方案2的reduce方式
性能优化:
// 对于大数据量,避免多次排序const sortedList = [...list].sort((a, b) => { if (a.appeal_type !== b.appeal_type) { return a.appeal_type - b.appeal_type; } return a.detail_appeal_type - b.detail_appeal_type;});React中的实现:
function DataDisplay() { const [data, setData] = useState([]); useEffect(() => { async function loadData() { const response = await fetch('api'); const result = await response.json(); setData(result.sort((a, b) => a.appeal_type - b.appeal_type || a.detail_appeal_type - b.detail_appeal_type )); } loadData(); }, []); return ( <div> {data.map(item => ( <div key={item.id}> {item.appeal_type} - {item.detail_appeal_type} </div> ))} </div> );}排序后的数据会呈现如下分组结构:
[ { appeal_type: 1, detail_appeal_type: 1, ... }, { appeal_type: 1, detail_appeal_type: 2, ... }, { appeal_type: 2, detail_appeal_type: 1, ... }, { appeal_type: 2, detail_appeal_type: 3, ... }, ...]这种排序方式确保了相同appeal_type的数据连续排列,且在每个分组内相同detail_appeal_type的数据相邻,非常适合需要层级展示的数据结构。