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

การวนลูปอาร์เรย์ นับการปรากฏของ 't' ที่ติดกันใน JavaScript

สมมติเรามีอาร์เรย์ของ 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 ]