Chúng tôi được yêu cầu viết một hàm JavaScript nhận một mảng các ký tự làm đối số đầu tiên và một số làm đối số thứ hai.
Hàm phải tạo một mảng gồm tất cả các mảng như vậy có độ dài bằng số sau đó được chỉ định bởi đối số thứ hai và chứa tất cả các hoán vị có thể có của các phần tử của mảng đầu vào.
Ví dụ -
Nếu mảng đầu vào và số là -
const arr = ['k', 5]; const num = 3;
Sau đó, đầu ra phải là -
const output = [ [ 'k', 'k', 'k' ], [ 'k', 'k', 5 ], [ 'k', 5, 'k' ], [ 'k', 5, 5 ], [ 5, 'k', 'k' ], [ 5, 'k', 5 ], [ 5, 5, 'k' ], [ 5, 5, 5 ] ];
Ví dụ
Sau đây là mã -
const arr = ['k', 5]; const num = 3; const allPairs = (arr = [], num) => { const res = []; if(num === 0){ return [[]]; } const subResult = allPairs(arr, num - 1); for(let el of arr){ for(let sub of subResult){ res.push([el].concat(sub)); } } return res; } console.log(allPairs(arr, num));
Đầu ra
Sau đây là đầu ra của bảng điều khiển -
[ [ 'k', 'k', 'k' ], [ 'k', 'k', 5 ], [ 'k', 5, 'k' ], [ 'k', 5, 5 ], [ 5, 'k', 'k' ], [ 5, 'k', 5 ], [ 5, 5, 'k' ], [ 5, 5, 5 ] ]