var list = []; var testArr = [1, 2, 3]; function fullArangement(arr, n) { for (var i = n; i < arr.length; i++) { transposition(arr, i, n); n + 2 < arr.length ? fullArangement(arr, n + 1) : list.push(Object.assign([], arr)); //或JSON.parse(JSON.stringify(arr)) 从第n+1个开始全排列 transposition(arr, i, n); } } function transposition(arr, i, n) { i != n ? arr[i] = [arr[n], arr[n] = arr[i]][0] : ""; } fullArangement(testArr, 0);