如何在 JavaScript 中建立給定元素數量的陣列排列


我們需要編寫一個 JavaScript 函式,該函式將文字陣列作為第一個引數,並將數字作為第二個引數。

該函式應該構造一個數組,其中包含所有長度等於第二個引數指定的數字的陣列,並且包含輸入陣列元素的所有可能排列。

例如 -

如果輸入陣列和數字為 -

const arr = ['k', 5];
const num = 3;

則輸出應為 -

const output = [
   [ 'k', 'k', 'k' ],
   [ 'k', 'k', 5 ],
   [ 'k', 5, 'k' ],
   [ 'k', 5, 5 ],
   [ 5, 'k', 'k' ],
   [ 5, 'k', 5 ],
   [ 5, 5, 'k' ],
   [ 5, 5, 5 ]
];

示例

以下是程式碼 -

const arr = ['k', 5];
const num = 3;
const allPairs = (arr = [], num) => {
   const res = [];
   if(num === 0){
      return [[]];
   }
   const subResult = allPairs(arr, num - 1);
   for(let el of arr){
      for(let sub of subResult){
         res.push([el].concat(sub));
      }
   }
   return res;
}
console.log(allPairs(arr, num));

輸出

以下是控制檯輸出 -

[
   [ 'k', 'k', 'k' ],
   [ 'k', 'k', 5 ],
   [ 'k', 5, 'k' ],
   [ 'k', 5, 5 ],
   [ 5, 'k', 'k' ],
   [ 5, 'k', 5 ],
   [ 5, 5, 'k' ],
   [ 5, 5, 5 ]
]

更新於: 2021年1月20日

166 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.