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

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


สมมติว่าเรามีอาร์เรย์ของสตริงที่มีรายการที่ซ้ำกันบางอย่างเช่นนี้ -

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

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ดังกล่าว ฟังก์ชันควรรวมรายการที่ซ้ำกันทั้งหมดเข้าด้วยกัน

ดังนั้นเอาต์พุตของอินพุตด้านบนควรมีลักษณะดังนี้ −

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' ]