Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

แปลงอาร์เรย์เป็นช่วงเท่ากัน (Equal Intervals) ใน JavaScript

สมมติว่าเราต้องเขียนฟังก์ชัน parseEqualInterval() ที่รับอาร์เรย์ของตัวเลข 2 ตัวเป็นอาร์กิวเมนต์ตัวแรก และตัวเลข n เป็นอาร์กิวเมนต์ตัวที่สอง และแทรก n-1 รายการที่ห่างกันเท่ากันระหว่างสององค์ประกอบจริงของอาร์เรย์ต้นฉบับ ทำให้มันถูกแบ่งเป็น n ช่วงเท่ากัน

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

// หากอาร์เรย์อินพุตคือ:
const arr = [12, 48];
// และช่วงคือ 4
// ผลลัพธ์ควรเป็น:
const output = [12, 21, 30, 39, 48];

แบบนี้อาร์เรย์จะถูกแบ่งเป็น 4 ช่วงเท่ากัน มาเขียนโค้ดสำหรับฟังก์ชันนี้กัน:

ตัวอย่างโค้ด

const arr = [12, 48];

const parseEqualInterval = (arr, interval) => {
  const [first, second] = arr;
  const size = (second - first) / interval;
  for (let i = 1, el = first + size; i < interval; i++, el += size) {
    arr.splice(i, 0, Math.round((el + Number.EPSILON) * 100) / 100);
  }
};

parseEqualInterval(arr, 4);
console.log(arr);
parseEqualInterval(arr, 6);
console.log(arr);
parseEqualInterval(arr, 10);
console.log(arr);
parseEqualInterval(arr, 15);
console.log(arr);

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็นดังนี้:

[ 12, 21, 30, 39, 48 ]
[ 12, 13.5, 15, 16.5, 18, 19.5, 21, 30, 39, 48 ]
[ 12, 12.15, 12.3, 12.45, 12.6, 12.75, 12.9, 13.05, 13.2, 13.35, 13.5, 15, 16.5, 18, 19.5, 21, 30, 39, 48 ]
[ 12, 12.01, 12.02, 12.03, 12.04, 12.05, 12.06, 12.07, 12.08, 12.09, 12.1, 12.11, 12.12, 12.13, 12.14, 12.15, 12.3, 12.45, 12.6, 12.75, 12.9, 13.05, 13.2, 13.35, 13.5, 15, 16.5, 18, 19.5, 21, 30, 39, 48 ]