Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ค้นหาตัวเลขที่เป็นไปได้ในอาร์เรย์ที่สามารถรวมเป็นค่าเป้าหมาย JavaScript


เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของตัวเลขเป็นอาร์กิวเมนต์แรกและตัวเลขเดียวเป็นอาร์กิวเมนต์ที่สอง

ฟังก์ชันควรเลือกองค์ประกอบดังกล่าวจากอาร์เรย์ที่เมื่อเพิ่มเข้าไปจะให้ผลรวมที่ระบุโดยอาร์กิวเมนต์ที่สองของอาร์เรย์ ฟังก์ชันควรส่งคืนอาร์เรย์ของอาร์เรย์ย่อยของตัวเลขทั้งหมดที่เพิ่มเข้ามาจะให้ผลรวมที่ต้องการ

โปรดทราบว่าลำดับไม่สำคัญ และหากจำเป็น เรามีเสรีภาพในการใช้ตัวเลขมากกว่าหนึ่งตัวเพื่อสร้างผลรวม

ตัวอย่างเช่น −

หากอาร์เรย์อินพุตและผลรวมเป็น −

const arr =[14, 6, 10];const sum =40;

จากนั้นผลลัพธ์ควรเป็น −

เอาต์พุตคอนสตรัค =[ [ 14, 14, 6, 6 ], [ 14, 6, 10, 10 ], [ 6, 6, 6, 6, 6, 10 ], [ 10, 10, 10, 10 ] ];

ตัวอย่าง

const arr =[14, 6, 10];const sum =40;const findSum =(arr, ผลรวม) => { const res =[]; การค้นหา const =(ดัชนี ส่วน =[]) => { const s =part.reduce ((a, b) => a + b, 0); ถ้า (s ===ผลรวม){ res.push(ส่วนหนึ่ง) }; ถ้า (s>=ผลรวม || ดัชนี>=arr.length){ return; }; ค้นหา(ดัชนี part.concat(arr[ดัชนี])); ค้นหา (ดัชนี + 1 ส่วน); }; ค้นหา(0); return res;}console.log(findSum(arr, sum));

ผลลัพธ์

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>[ [ 14, 14, 6, 6], [ 14, 6, 10, 10 ], [ 6, 6, 6, 6, 6, 10 ], [ 10, 10, 10, 10 ]]