经典题目
在一个数组 Array 中有 A、B、C、D 四个元素,现需要得到它们全排列的结果
-
实现
:::details 点击查看代码
function Permutation(array) {
const length = array.length;
const result = [];
/**
* @description: 排列算法
* @param {*} FinishedArray 已排列好的数组
* @param {*} awaitArray 待排列的数组
*/
function arrange(finishedArray, awaitArray) {
if (finishedArray.length == length) {
/**
* @description: 如果 已排列好的数组长度 等于 原数组长度,递归结束
*/
// result.push(finishedArray); 结果:元素为 数组
result.push(finishedArray.join("")); //结果: 元素为 字符串
} else {
awaitArray.forEach((item, index) => {
let temp = [].concat(awaitArray);
temp.splice(index, 1);
arrange(finishedArray.concat(item), temp);
});
}
}
arrange([], array);
return result;
}
/**
* @description: 测试排列算法
*/
console.log(Permutation(["上", "下", "左", "右"]));:::