Computer >> Máy Tính >  >> Lập trình >> Javascript

Giảm một mảng thành các nhóm trong JavaScript


Giả sử, chúng ta có một mảng chuỗi chứa một số mục nhập trùng lặp như thế này -

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

Chúng tôi được yêu cầu viết một hàm JavaScript có trong một mảng như vậy. Hàm sẽ hợp nhất tất cả các mục trùng lặp với nhau.

Do đó, đầu ra cho đầu vào ở trên sẽ giống như thế này -

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

Ví dụ

Mã cho điều này sẽ là -

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));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

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