Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

วนซ้ำผ่านอาร์เรย์ เพิ่มเหตุการณ์ที่เกิดขึ้นจริงใน 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 ]