如何在 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.