js一行代码实现数组全排列 比如传入123 输出 1231322132313123211221
可以使用递归来实现数组的全排列。以下是一行代码实现数组全排列的方法:
const permute = (arr) => arr.length === 1 ? [arr] : arr.flatMap((val, i) => permute([...arr.slice(0, i), ...arr.slice(i + 1)]).map((perm) => [val, ...perm]));
使用例子:
console.log(permute([1, 2, 3]));
输出结果:
[
[ 1, 2, 3 ],
[ 1, 3, 2 ],
[ 2, 1, 3 ],
[ 2, 3, 1 ],
[ 3, 1, 2 ],
[ 3, 2, 1 ]
]
这段代码利用了 Array.prototype.flatMap() 方法和递归的思想,将数组的每个元素依次作为起始元素,求剩下元素的全排列,然后将起始元素与全排列结果组合起来,最终得到数组的全排列。
原文地址: http://www.cveoy.top/t/topic/hU3Y 著作权归作者所有。请勿转载和采集!