สมมติว่าเรามีชุดตัวเลขเรียงแบบนี้ซึ่งเราสามารถมีตัวเลขต่อเนื่องกันได้
const arr = [1, 2, 3, 5, 7, 8, 9, 11];
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ดังกล่าว
ฟังก์ชันของเราควรสร้างลำดับสำหรับอาร์เรย์นี้ ลำดับควรเป็นแบบที่สำหรับองค์ประกอบที่ต่อเนื่องกันทั้งหมดของอาร์เรย์ เราต้องเขียนตัวเลขเริ่มต้นและสิ้นสุดโดยแทนที่ตัวเลขที่คั่นด้วยขีดกลาง (-) และรักษาตัวเลขอื่นๆ ทั้งหมดไว้ไม่เปลี่ยนแปลง
ดังนั้น สำหรับอาร์เรย์ข้างต้น ผลลัพธ์ควรมีลักษณะดังนี้ −
const output = '1-3,5,7-9,11';
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
const arr = [1, 2, 3, 5, 7, 8, 9, 11]; const buildSequence = (arr = []) => { let pointer; return arr.reduce((acc, val, ind) => { if (val + 1 === arr[++ind]) { if (pointer == null ) { pointer = val; }; return acc; }; if (pointer) { acc.push(`${pointer}-${val}`); pointer = null; return acc; } acc.push(val); return acc; }, []).join(','); } console.log(buildSequence(arr));
ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
1-3,5,7-9,11