如何優化冗余的JavaScript排序代碼?

如何優化冗余的JavaScript排序代碼?

JavaScript排序代碼優化:告別冗余,擁抱通用

本文將演示如何優化一段冗余的JavaScript排序代碼。原始代碼使用多個函數分別對不同屬性進行排序,不夠簡潔且缺乏靈活性。我們將重構代碼,創建一個更通用、更易維護的排序函數。

原始代碼問題:

原始代碼存在大量重復,每個排序函數幾乎相同,只是排序屬性不同。 此外,直接訪問屬性(例如a.pinyin[0])限制了靈活性,難以處理復雜的屬性嵌套。

優化方案:

立即學習Java免費學習筆記(深入)”;

我們創建一個通用的排序函數,該函數接收屬性名稱和排序方向作為參數,從而實現代碼復用和靈活性提升。

優化后的代碼:

const sortData = (curr_data, prop, is_desc) => {     const direction = is_desc ? -1 : 1; // 簡化升序/降序邏輯     return curr_data.children.sort((a, b) => {         const aValue = prop.split('.').reduce((o, k) => o[k], a); // 使用reduce處理嵌套屬性         const bValue = prop.split('.').reduce((o, k) => o[k], b);         return direction * (aValue > bValue ? 1 : (aValue < bValue ? -1 : 0)); // 簡潔的比較邏輯     }); };  // 使用示例: sortData(curr_data, 'pinyin', false);   // 升序排序 pinyin 屬性 sortData(curr_data, 'suffix', true);    // 降序排序 suffix 屬性 sortData(curr_data, 'bytes', false);    // 升序排序 bytes 屬性 sortData(curr_data, 'timestamp.mtime', true); // 降序排序 timestamp.mtime 屬性

優化說明:

  • sortData 函數接收三個參數:curr_data (數據)、prop (排序屬性)、is_desc (排序方向)。
  • direction 變量簡化了升序/降序的邏輯。
  • prop.split(‘.’).reduce 方法優雅地處理了屬性嵌套,例如 timestamp.mtime。
  • 代碼更簡潔,易于理解和維護,避免了重復代碼。

通過這個優化,我們得到了一個更通用、更靈活、更易維護的JavaScript排序函數,有效解決了原始代碼的冗余問題。

? 版權聲明
THE END
喜歡就支持一下吧
點贊14 分享