JavaScript 中的排列
當面對為整數陣列產生排列的任務時,最簡單的方法是使用遞歸演算法。在給定的程式碼片段中介紹了一種旨在處理字串的演算法。然而,當嘗試調整此演算法以處理整數數組時,由於方法對不同資料類型的操作方式存在差異,因此出現了挑戰。
為了解決此問題,需要對此演算法進行修改版本,它考慮了整數的特定行為。以下介紹的一種優雅的解決方案包含了以下注意事項:
function permutator(inputArr) { var results = []; function permute(arr, memo) { var cur, memo = memo || []; for (var i = 0; i < arr.length; i++) { cur = arr.splice(i, 1); if (arr.length === 0) { results.push(memo.concat(cur)); } permute(arr.slice(), memo.concat(cur)); arr.splice(i, 0, cur[0]); } return results; } return permute(inputArr); }
該演算法對輸入數組的副本進行操作,確保原始數組保持不變。它遞歸地探索所有可能的組合並將排列儲存在數組的數組中。
或者,也可以使用此演算法的 ES6 (2015) 版本:
const permutator = (inputArr) => { let result = []; const permute = (arr, m = []) => { if (arr.length === 0) { result.push(m) } else { for (let i = 0; i < arr.length; i++) { let curr = arr.slice(); let next = curr.splice(i, 1); permute(curr.slice(), m.concat(next)) } } } permute(inputArr) return result; }
此版本使用箭頭函數和預設參數值以獲得更簡潔的語法。功能保持不變,為提供的陣列產生排列。
以上是如何在 JavaScript 中產生整數陣列的排列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!