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

กรอกค่าตัวเลขที่ขาดหายไปในอาร์เรย์ JavaScript


เราได้รับอาร์เรย์ของ n รายการ ซึ่งมีเพียง 2 รายการเท่านั้นที่เป็นตัวเลข รายการอื่นๆ ทั้งหมดเป็นค่าว่าง อะไรประมาณนี้ -

const arr =[null, null, -1, null, null, null, -3, null, null, null];

เราควรเขียนฟังก์ชันที่ใช้อาร์เรย์นี้และเติมชุดเลขคณิตให้สมบูรณ์ซึ่งตัวเลขทั้งสองนี้เป็นส่วนหนึ่ง เพื่อให้เข้าใจปัญหานี้ชัดเจนขึ้น เราสามารถนึกถึงค่าว่างเหล่านี้เป็นช่องว่างที่เราจำเป็นต้องเติมตัวเลขเพื่อให้อาร์เรย์ทั้งหมดมีรูปแบบความก้าวหน้าทางคณิตศาสตร์

เกี่ยวกับความก้าวหน้าทางคณิตศาสตร์

กล่าวกันว่าอนุกรม/อาร์เรย์ของตัวเลขจะทำให้เกิดความก้าวหน้าทางคณิตศาสตร์ ถ้าตัวเลขใด ๆ nจากอาร์เรย์นั้นเกิดขึ้นจากการเพิ่มค่าคงที่ d ให้กับตัวเลขที่ (n-1)

ตัวอย่าง −

1, 2, 3, 4, 5, 6, 7, 8

ในที่นี้ ทุกจำนวนที่ตามมาจะได้มาโดยการเพิ่มค่าคงที่ (1 ในกรณีนี้) ให้กับตัวเลขก่อนหน้า

ตัวอย่างอื่นๆ −

1, 1, 1, 1, 1, 1, 1, 1, 110, 8, 6, 4, 2, 0, -2

องค์ประกอบแรกของอนุกรมดังกล่าวถูกกำหนดโดย a และความก้าวหน้าคงที่ในทุก ๆ จำนวนซึ่งเป็นผลต่างร่วมแสดงด้วย d

ดังนั้น หากเราแทนองค์ประกอบที่ n ของอนุกรมดังกล่าวด้วย Tn แล้ว

Tn =a + (n -1)d

โดยที่ n คือดัชนีฐาน 1 ของตัวเลขนั้น

ด้วยสิ่งเหล่านี้ที่ชัดเจน เรามาเขียนโค้ดสำหรับปัญหาที่เราเพิ่งอธิบายไป ก่อนอื่นเราจะพยายามค้นหาองค์ประกอบแรก (a) และความแตกต่างทั่วไป (d) สำหรับอาร์เรย์ เมื่อเราได้สิ่งเหล่านั้นแล้ว เราจะวนรอบอาร์เรย์เดิมเพื่อสร้างชุดข้อมูล

ตัวอย่าง

const arr =[null, null, -1, null, null, null, -3, null, null, null];const arr2 =[null, null, -1, null, null, null, 12, null , null, null, null, null, null];const constructSeries =(arr) => { const map ={ แรก:ไม่ได้กำหนด, ล่าสุด:ไม่ได้กำหนด }; arr.forEach((el, ind) => { if(el !==null){ if(map['first']){ map['last'] =[el, ind]; }else{ map[' แรก'] =[เอล, ind]; } }; }); const { แรก, ล่าสุด } =แผนที่; const commonDifference =(สุดท้าย[0] - ก่อน[0])/(สุดท้าย[1] - ก่อน[1]); const firstElement =(ก่อน[0]) - ((ก่อน[1])*commonDifference); ส่งคืน arr.map ((รายการ, ดัชนี) => { return firstElement + (ดัชนี * commonDifference); });};console.log (constructSeries (arr));console.log (constructSeries (arr2));

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็น -

<ก่อนหน้า>[ 0, -0.5, -1, -1.5, -2, -2.5, -3, -3.5, -4, -4.5][ -7.5, -4.25, -1, 2.25, 5.5, 8.75, 12 , 15.25, 18.5, 21.75, 25, 28.25, 31.5)