n8n 排序節點(Sort)(04):Simple/Random/Code 一次搞懂

當你需要把清單「照順序排好」或「隨機打散」時,排序節點就是最省力的選擇。它提供三種模式:

  • Simple:指定欄位,選擇升/降序,快速完成常見排序。
  • Random:立即打亂清單,適合抽樣、平均分配、A/B 測試。
  • Code:用 JavaScript 自訂比較器,實作多條件、複合鍵、特殊規則。

注意:排序行為沿用 JavaScript 的排序邏輯;未自訂比較器時會把元素轉成字串再比較(可能出現 10 < 2 這類數字字串陷阱)。遇到數字、日期與在地化字串排序,建議先轉型或改用 Code

數組排序行為:排序操作使用默認的 JavaScript 操作,其中要排序的元素被轉換為字符串並比較它們的值。參考 Mozilla 的 Array sort 指南了解更多信息。

data sorting visualization with items being arranged in ascending or descending order

排序節點 (Sort Node) 參數

使用「類型」參數配置此節點。使用下拉菜單選擇如何輸入排序:

簡單 (Simple)

使用選定字段執行升序或降序排序

隨機 (Random)

在列表中創建隨機順序

代碼 (Code)

輸入自定義 JavaScript 代碼來執行排序操作

簡單 (Simple) 排序

當您選擇「簡單」作為「類型」時:

  • 使用「添加排序欄位」(Add Field To Sort By) 按鈕輸入「欄位名稱」(Field Name)
  • 選擇是使用「升序」(Ascending) 還是「降序」(Descending) 順序
shuffled cards or data items in random order

隨機 (Random) 排序

選擇「隨機」類型將在列表中創建隨機順序。

這對於需要隨機選擇或打亂數據順序的場景非常有用,例如:

  • 創建隨機抽樣數據集
  • 實現公平的輪換或分配系統
  • 進行 A/B 測試時隨機分配用戶

隨機排序不需要任何額外的參數設置,選擇此類型後節點會自動對輸入數據進行隨機排序。

代碼 (Code) 排序

選擇「代碼」類型可以輸入自定義 JavaScript 代碼來執行排序操作。這是一個很好的選擇,如果簡單排序無法滿足您的需求。

在「代碼」輸入字段中輸入您的自定義 JavaScript 代碼。例如:

// 按名字長度排序
items.sort((a, b) => a.name.length - b.name.length);

// 按多個條件排序
items.sort((a, b) => {
  // 首先按類別排序
  if (a.category < b.category) return -1;
  if (a.category > b.category) return 1;
  
  // 然後按價格排序
  return a.price - b.price;
});

return items;

代碼排序提供了最大的靈活性,允許您實現複雜的自定義排序邏輯。

排序節點 (Sort Node) 應用場景

產品目錄排序

按價格、人氣或類別對產品列表進行排序

事件時間線

按日期和時間對事件列表進行排序,創建時間順序的時間線

隨機選擇

從列表中隨機選擇項目,用於抽獎或隨機分配任務

排序節點在需要以特定順序呈現數據或需要隨機選擇的場景中非常有用。

person successfully completing a complex workflow with data transformation nodes

總結

  • 先選模式再下手:一般需求用 Simple;抽樣/打散用 Random;需要多條件、次序規則或型別轉換時用 Code
  • 先把資料長相弄乾淨:數字用 Number()、日期用 new Date() 或時間戳;文字需要語系排序用 localeCompare()
  • 避免不穩定結果:補上次要鍵(tie-breaker),確保同值時仍有一致順序。
  • 隨機可重現? 內建 Random 不提供種子;要可重現的洗牌,用 Code 自寫帶種子的隨機。
  • 大清單要留意效能:精簡物件、避免過度巢狀取值,必要時先在上游做映射與清洗再排序。

把排序交給節點,你就能更專注在資料的商業規則與呈現。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端