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