เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของ Numbers เป็นอาร์กิวเมนต์แรก และ Number รวมเป้าหมายเป็นอาร์กิวเมนต์ที่สอง
ฟังก์ชันควรส่งคืนอาร์เรย์ของอาร์เรย์ย่อยทั้งหมดจากอาร์เรย์ดั้งเดิมที่มีองค์ประกอบรวมเพื่อสร้างผลรวมเป้าหมาย เราสามารถใช้เลขตัวเดียวสองครั้งเพื่อให้ได้ผลรวม
ตัวอย่างเช่น −
หากอาร์เรย์อินพุตและตัวเลขเป็น −
const arr = [1, 2, 4]; const sum = 4;
ผลลัพธ์ควรเป็น −
const output = [ [1, 1, 1, 1], [1, 1, 2], [2, 2], [4] ]
ตัวอย่าง
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)); ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
[ [ 1, 1, 1, 1 ], [ 1, 1, 2 ], [ 2, 2 ], [ 4 ] ]