สมมติว่าเรามีอาร์เรย์ตัวเลข:
const arr = [1, 2, 1, 3, 2];
เราต้องเขียนฟังก์ชันที่รับอาร์เรย์ดังกล่าวเป็นอาร์กิวเมนต์แรก อาร์กิวเมนต์ที่สองคือตัวเลขแทนผลรวมที่ต้องการ (sum) และอาร์กิวเมนต์ที่สามคือตัวเลขแทนจำนวนตัวเลขที่ต้องบวกกันได้ผลรวมที่ต้องการ (โดยไม่ซ้ำสมาชิก) เรียกว่า num
ฟังก์ชันต้องคืนค่าจำนวนกลุ่มทั้งหมดที่มีผลรวมและความยาวตามที่ต้องการ
ตัวอย่าง
ถ้าค่านำเข้าคือ:
const arr = [1, 2, 1, 3, 2]; const sum = 3; const num = 2;
ผลลัพธ์ควรเป็น:
const output = 2;
เพราะกลุ่มที่เป็นไปได้คือ 1,2 และ 1,2
ตัวอย่างโค้ด
const arr = [1, 2, 1, 3, 2];
const sum = 3;
const num = 2;
const findGroups = (arr = [], sum = 1, num = 1) => {
let count = 0;
for(let i = 0; i < arr.length; i++) {
let part = arr.slice(0 + i, num + i);
const partSum = part.reduce((acc, val) => acc + val);
if(partSum === sum) {
count++;
}
}
return count;
};
console.log(findGroups(arr, sum, num));
ผลลัพธ์
2