สมมติว่าเรามีอาร์เรย์ (เพิ่มขึ้น) เรียงลำดับของตัวเลขเช่นนี้ -
const arr = [2, 5, 7, 8, 9];
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ดังกล่าว ฟังก์ชันควรสร้างอาร์เรย์ย่อยใหม่สำหรับแต่ละองค์ประกอบของอาร์เรย์อินพุต
อาร์เรย์ย่อยควรมีความแตกต่าง (ความแตกต่างระหว่างองค์ประกอบนั้นกับองค์ประกอบที่ตามมาทีละรายการ)
ดังนั้นสำหรับองค์ประกอบอาร์เรย์แรก ความแตกต่างคือ −
5 - 2 = 3 7 - 2 = 5 8 - 2 = 6 9 - 2 = 7
ดังนั้น subarray สำหรับองค์ประกอบแรกควรเป็น −
[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 ] ]