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

การลบชุดไม่เป็นค่าลบใน JavaScript


เรามีชุดของจำนวนเต็มและค่าที่เราต้องลบออกจากผลรวมของชุด

ชอบที่นี่

[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 ]