1 let str = "abbd"
2 function Arrange(str) {
3 if (str.length<=2) {
4 return str.length===2?[str,str[1]+str[0]]:[str]
5 }
6 let arrRes = []
7 let arrStr = str.split('');
8 for (let i = 0; i < arrStr.length; i++) {
9 let s1= str.slice(0,i)
10 let s2= str.slice(i+1)
11 let arr = Arrange(s1+s2);
12 let res = arr.map(e=>e+str[i])
13 arrRes = Array.from(new Set([...arrRes,...res]))
14 }
15 return arrRes
16 }
17 console.log(Arrange(str));
1 function Arrange1(str) {
2 if (str.length<=2) {
3 return str.length===2?[str,str[1]+str[0]]:[str]
4 }
5
6 return str.split('').reduce((l,n,i) => {
7 let arr = Arrange1(str.slice(0, i)+str.slice(i+1))
8 return [...l,...Array.from(new Set(arr.map(e=>n+e)))]
9 },[]);
10 }
11 let str = "abbd"
12 console.log(Arrange1(str));