獲取一個整數陣列,並使用 JavaScript 建立一個包含所有可能排列的陣列


我們需要編寫一個執行以下操作的函式 −

  • 獲取一個整數陣列作為引數(例如 [1,2,3,4])

  • 建立一個包含所有 [1,2,3,4] 可能排列的陣列,其中每個排列的長度為 4(也即原始陣列的長度)

示例

程式碼如下 −

const arr = [1, 2, 3, 4];
const permute = (arr = [], res = [], used = []) => {
   let i, ch;
   for (i = 0; i < arr.length; i++) {
      ch = arr.splice(i, 1)[0];
      used.push(ch);
      if (arr.length === 0) {
         res.push(used.slice());
      }
      permute(arr, res, used);
      arr.splice(i, 0, ch);
      used.pop();
   };
   return res;
};
console.log(permute(arr));

輸出

控制檯中的輸出如下 −

[
   [ 1, 2, 3, 4 ], [ 1, 2, 4, 3 ],
   [ 1, 3, 2, 4 ], [ 1, 3, 4, 2 ],
   [ 1, 4, 2, 3 ], [ 1, 4, 3, 2 ],
   [ 2, 1, 3, 4 ], [ 2, 1, 4, 3 ],
   [ 2, 3, 1, 4 ], [ 2, 3, 4, 1 ],
   [ 2, 4, 1, 3 ], [ 2, 4, 3, 1 ],
   [ 3, 1, 2, 4 ], [ 3, 1, 4, 2 ],
   [ 3, 2, 1, 4 ], [ 3, 2, 4, 1 ],
   [ 3, 4, 1, 2 ], [ 3, 4, 2, 1 ],
   [ 4, 1, 2, 3 ], [ 4, 1, 3, 2 ],
   [ 4, 2, 1, 3 ], [ 4, 2, 3, 1 ],
   [ 4, 3, 1, 2 ], [ 4, 3, 2, 1 ]
]

更新時間:2020 年 11 月 21 日

251 次瀏覽

開啟您的 職業生涯

完成課程獲得認證

開始學習
廣告