Computer >> Máy Tính >  >> Lập trình >> Javascript

Lấy một mảng các số nguyên và tạo một mảng gồm tất cả các hoán vị có thể có trong JavaScript

Chúng tôi được yêu cầu viết một hàm thực hiện những điều sau -

  • lấy một mảng số nguyên làm đối số (ví dụ:[1,2,3,4])

  • tạo một mảng gồm tất cả các hoán vị có thể có của [1,2,3,4], với mỗi hoán vị có độ dài là 4 (tức là độ dài của mảng ban đầu)

Ví dụ

Mã cho điều này sẽ là -

const arr = [1, 2, 3, 4];
const permute = (arr = [], res = [], used = []) => {
   let i, ch;
   for (i = 0; i < arr.length; i++) {
      ch = arr.splice(i, 1)[0];
      used.push(ch);
      if (arr.length === 0) {
         res.push(used.slice());
      }
      permute(arr, res, used);
      arr.splice(i, 0, ch);
      used.pop();
   };
   return res;
};
console.log(permute(arr));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

[
   [ 1, 2, 3, 4 ], [ 1, 2, 4, 3 ],
   [ 1, 3, 2, 4 ], [ 1, 3, 4, 2 ],
   [ 1, 4, 2, 3 ], [ 1, 4, 3, 2 ],
   [ 2, 1, 3, 4 ], [ 2, 1, 4, 3 ],
   [ 2, 3, 1, 4 ], [ 2, 3, 4, 1 ],
   [ 2, 4, 1, 3 ], [ 2, 4, 3, 1 ],
   [ 3, 1, 2, 4 ], [ 3, 1, 4, 2 ],
   [ 3, 2, 1, 4 ], [ 3, 2, 4, 1 ],
   [ 3, 4, 1, 2 ], [ 3, 4, 2, 1 ],
   [ 4, 1, 2, 3 ], [ 4, 1, 3, 2 ],
   [ 4, 2, 1, 3 ], [ 4, 2, 3, 1 ],
   [ 4, 3, 1, 2 ], [ 4, 3, 2, 1 ]
]