我们有一个数组 [1,2,3],需要输出所有排列,输出的是123,132,213,312,231,321
最初版本
const num = [1, 2, 3];
function getNums(num) {
let nums = []
let total = 0
num.forEach(n=>total+=n)
console.log(total);
num.forEach((n,i)=>{
let newNum = num.filter(t=> t!==n)
newNum.forEach(el => {
nums.push(Number(`${n}${el}${total-el-n}`))
})
})
console.log('nums === ', nums);
}
getNums(num)
优化后版本
const num = [1, 2, 3];
function getNums(num) {
const total = num.reduce((sum, n) => sum + n, 0);
const nums = num.flatMap(n =>
num.filter(t => t !== n)
.map(el => Number(`${n}${el}${total - n - el}`))
);
console.log('nums ===', nums);
}
getNums(num);