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

การนับกลุ่มตัวเลขไม่ติดลบที่ติดกัน - JavaScript

นับจำนวนกลุ่ม (clusters) ของตัวเลขไม่ติดลบ (>= 0) ที่ติดกันในอาร์เรย์

ตัวอย่าง

arr = [-1,-2,-1,0,-1,-2,-1,-2,-1,0,1,0]
Clusters: [0] (index 3), [0,1,0] (index 9-11) → 2 clusters

ตัวอย่างโค้ด

const arr = [-1,-2,-1,0,-1,-2,-1,-2,-1,0,1,0];

const positiveClusters = arr => {
  return arr.reduce((acc, val, ind) => {
    // จบกลุ่ม: ค่าปัจจุบัน >= 0 และ (ค่าถัดไป < 0 หรือจบอาร์เรย์)
    if (val >= 0 && (arr[ind + 1] < 0 || typeof arr[ind + 1] === 'undefined')) {
      acc++;
    }
    return acc;
  }, 0);
};

console.log(positiveClusters(arr));

การทำงาน

  • ใช้ reduce นับกลุ่ม
  • เงื่อนไขจบกลุ่ม: ค่าปัจจุบัน >= 0 AND (ค่าถัดไป < 0 OR ไม่มีค่าถัดไป)
  • นับที่จุดสิ้นสุดของกลุ่ม

ผลลัพธ์

2