Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng Numbers làm đối số đầu tiên và một tổng mục tiêu Số làm đối số thứ hai.
Hàm phải trả về một mảng gồm tất cả các mảng con đó từ mảng ban đầu có tổng các phần tử để tạo thành tổng mục tiêu. Chúng ta có thể sử dụng một số hai lần để đạt được tổng.
Ví dụ -
Nếu mảng và số đầu vào là -
const arr = [1, 2, 4]; const sum = 4;
thì đầu ra phải là -
const output = [ [1, 1, 1, 1], [1, 1, 2], [2, 2], [4] ]
Ví dụ
const arr = [1, 2, 4]; const sum = 4; const getCombinations = (arr = [], sum) => { const result = []; const pushElement = (i, t) => { const s = t.reduce(function (a, b) { return a + b; }, 0); if (sum === s) { result.push(t); return; }; if (s > sum || i === arr.length) { return; }; pushElement(i, t.concat([arr[i]])); pushElement(i + 1, t); } pushElement(0, []); return result; }; console.log(getCombinations(arr, sum));
Đầu ra
Và đầu ra trong bảng điều khiển sẽ là -
[ [ 1, 1, 1, 1 ], [ 1, 1, 2 ], [ 2, 2 ], [ 4 ] ]