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

JavaScript - หาระยะห่างระหว่างสมาชิกในอาร์เรย์

สมมติว่าเรามีอาร์เรย์ของตัวเลขที่จัดเรียงแล้ว (ลำดับเพิ่มขึ้น) แบบนี้:

const arr = [2, 5, 7, 8, 9];

เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ดังกล่าว ฟังก์ชันควรสร้างซับอาร์เรย์ใหม่สำหรับแต่ละสมาชิกของอาร์เรย์อินพุต ซับอาร์เรย์ควรมีสมาชิกความต่าง (ความต่างระหว่างสมาชิกตัวนั้นกับสมาชิกถัดไปทีละตัว) ดังนั้น สำหรับสมาชิกแรกของอาร์เรย์ ความต่างคือ:

5 - 2 = 3
7 - 2 = 5
8 - 2 = 6
9 - 2 = 7

ดังนั้น ซับอาร์เรย์สำหรับสมาชิกแรกควรเป็น:

[3, 5, 6, 7]

เช่นเดียวกัน สำหรับสมาชิกที่สอง ควรเป็น:

[2, 3, 4]

สำหรับสมาชิกที่สาม:

[1, 2]

สมาชิกที่สี่:

[1]

และเนื่องจากสมาชิกที่ห้าเป็นตัวสุดท้าย ไม่มีสมาชิกเหลือสำหรับมัน ดังนั้นเราไม่พิจารณาสมาชิกสุดท้าย ดังนั้น ผลลัพธ์สำหรับอาร์เรย์ทั้งหมดควรเป็น:

const output = [
  [3, 5, 6, 7],
  [2, 3, 4],
  [1, 2],
  [1]
];

ตัวอย่าง

โค้ดสำหรับทำสิ่งนี้คือ:

const arr = [2, 5, 7, 8, 9];
const distanceBetween = (arr,r = []) => {
  if(r.length <= arr.length-2) {
    let temp = [];
    let b = arr[r.length];
    arr.forEach(e => temp.push(e - b));
    r.push(temp.filter(e => e > 0));
    return distanceBetween(arr,r);
  } else {
    return r;
  };
}
console.log(distanceBetween(arr));

ผลลัพธ์

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

[ [ 3, 5, 6, 7 ], [ 2, 3, 4 ], [ 1, 2 ], [ 1 ] ]