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

การลดอาร์เรย์เป็นกลุ่มใน JavaScript


ภาพรวม

สมมติว่าเรามีอาร์เรย์ของสตริงที่มีรายการซ้ำ:

const arr = ['blue', 'blue', 'green', 'blue', 'yellow', 'yellow', 'green'];

เราต้องเขียนฟังก์ชันที่รับอาร์เรย์ดังกล่าวและรวมรายการซ้ำที่ติดกันเข้าด้วยกัน

ผลลัพธ์ที่คาดหวัง

const output = ['blueblue', 'green', 'blue', 'yellowyellow', 'green'];

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

const arr = ['blue', 'blue', 'green', 'blue', 'yellow', 'yellow', 'green'];

const combineDuplicate = (arr = []) => {
  let prev = null;
  const groups = arr.reduce((acc, value) => {
    if (prev === value) {
      acc[acc.length - 1] += value;
    } else {
      prev = value;
      acc.push(value);
    }
    return acc;
  }, []);
  return groups;
};

console.log(combineDuplicate(arr));

ผลลัพธ์ในคอนโซล

[ 'blueblue', 'green', 'blue', 'yellowyellow', 'green' ]