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

สร้างลำดับจากอาร์เรย์ใน JavaScript


สมมติว่าเรามีชุดตัวเลขเรียงแบบนี้ซึ่งเราสามารถมีตัวเลขต่อเนื่องกันได้

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