เรามีชุดของจำนวนเต็มและค่าที่เราต้องลบออกจากผลรวมของชุด
ชอบที่นี่
[4, 5, 6, 7, 8] − 25
หากเราลบจากทุก ๆ จำนวนเท่ากัน เราจะได้ -
[-1, 0, 1, 2, 3]
อย่างไรก็ตาม เราไม่ต้องการตัวเลขที่น้อยกว่า 0
ดังนั้น หากเราเขียนอัลกอริธึมเพื่อทำสิ่งนี้ ตัวเลขติดลบจะล้นออกมาเท่าๆ กันในตัวเลขที่เหลือ และตอนนี้เราจะได้ −
[0, 0, 1, 2, 3] − 1
การสร้างชุดผลลัพธ์ -
[0, 0, 1 − 0.333, 2 − 0.333, 3 - 0.333]
โปรดทราบว่านี่คือผลลัพธ์ที่เราต้องการ
ค่าลบทั้งหมดจะล้นอย่างสม่ำเสมอในค่าบวกที่เหลืออยู่
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของตัวเลขเป็นอาร์กิวเมนต์แรกและจำนวนรวมเป็นอาร์กิวเมนต์ที่สอง
จากนั้นฟังก์ชันควรคำนวณอาร์เรย์ที่ลบออกและกระจายอย่างสม่ำเสมอแล้วส่งคืน
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
const arr =[4, 5, 6, 7, 8];const subtract =(arr, sum) => { return arr.map ((el, index, array) => { const rem =array.length − index const avg =sum / rem; const toSubtract =Math.min(avg, el); sum −=toSubtract; return el − toSubtract; });};console.log(subtract(arr, 25));ก่อน>ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
<ก่อนหน้า>[ 0, 0, 0.666666666666667, 1.666666666666666, 2.666666666666666 ]