สมมติว่าเรามีอาร์เรย์ของ true/false ที่แสดงโดย 't'/'f' ซึ่งเราดึงมาจากฐานข้อมูลบางอย่างเช่นนี้ -
const arr = ['f', 't', 'f', 't', 't', 't', 'f', 'f', 't', 't', 't', 't', 't', 't', 'f', 't'];
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ดังกล่าว ฟังก์ชันของเราควรนับการปรากฏต่อเนื่องของ 't' ที่คั่นกลางระหว่าง 'f' สองตัว และส่งคืนอาร์เรย์ของการนับนั้น
ดังนั้น สำหรับอาร์เรย์ข้างต้น ผลลัพธ์ควรมีลักษณะดังนี้ −
const output = [1, 3, 6, 1];
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
const arr = ['f', 't', 'f', 't', 't', 't', 'f', 'f', 't', 't', 't', 't', 't', 't', 'f', 't']; const countClusters = (arr = []) => { let res = []; res = arr.reduce((acc, val) => { const { length: l } = acc; if(val === 't'){ acc[l - 1]++; } else if(acc[l - 1] !== 0){ acc.push(0); }; return acc; }, [0]); return res; }; console.log(countClusters(arr));
ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
[ 1, 3, 6, 1 ]