นับจำนวนกลุ่ม (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