Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Nhận mảng số nguyên và tạo mảng tất cả hoán vị trong JavaScript

Chúng ta cần viết hàm thực hiện:

  • Nhận mảng số nguyên làm đối số (ví dụ [1,2,3,4])
  • Tạo mảng tất cả hoán vị của [1,2,3,4], mỗi hoán vị độ dài 4 (bằng độ dài mảng gốc)

Ví dụ

Mã thực hiện:

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));

Kết quả

Kết quả in ra console:

[ 
  [ 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 ] 
]