// 给定一组数字,返回所有排列方式的组合(针对重复项做了去重处理)
//例: 输入[1,2,3] 返回:[1,2,3] [1,3,2] [2,1,3] [2,3,1] [3,1,2] [3,2,1]
let totalArr = [];
function combinate(val) {
if (!(val instanceof Array)) return alert('请传递数组');
if (val.some(item => isNaN(Number(item)))) return alert('数组不能包含非数字');
val = Array.from(new Set(val.map(item=>Number(item))));
digui(val, []);
}
function digui(val, arr) {
val.forEach(item => {
if (!arr.includes(item)) {
let arr1 = [...arr, item];
if (arr1.length == val.length) {
totalArr = [...totalArr, arr1];
}
if (arr1.length < val.length) {
digui(val, arr1);
}
}
});
}
combinate([2, 3, 1]);
console.log(totalArr);
javascript 输出一组数字的全部排列组合
最新推荐文章于 2023-06-29 09:00:00 发布