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

Nhóm phần tử đối sánh trong mảng trong JavaScript

Giả sử, chúng ta có một mảng bảng chữ cái chứa một số bảng chữ cái lặp lại như thế này -

const arr = [
   'a','a','a','a','d','e','e','f','h','h','h','i','l','m','n',
   'r','s','s',' t','u','v','y','y'
];

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 nên nhóm tất cả các aphabet giống nhau thành một mảng con duy nhất của chúng.

Do đó, đối với mảng trên, đầu ra sẽ giống như -

const output = [
   ['a','a','a','a'], ['d'], ['e','e'], ['f'], ['h','h','h'],
   ['i'], ['l'], ['m'], ['n'], ['r'], ['s','s'], ['t'], ['u'],
   ['v'], ['y','y']
];

Ví dụ

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

const arr = [
   'a','a','a','a','d','e','e','f','h','h','h','i','l','m','n','r','s','s','
   t','u','v','y','y'
];
const bringAlong = (arr = []) => {
   const hash = {};
   return arr.reduce(function(res, e) {
      if(hash[e] === undefined)
         hash[e] = res.push([e]) − 1;
      else
         res[hash[e]].push(e);
      return res;
   }, []);
};
console.log(bringAlong(arr));

Đầu ra

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

[
   [ 'a', 'a', 'a', 'a' ],
   [ 'd' ],
   [ 'e', 'e' ],
   [ 'f' ],
   [ 'h', 'h', 'h' ],
   [ 'i' ],
   [ 'l' ],
   [ 'm' ],
   [ 'n' ],
   [ 'r' ],
   [ 's', 's' ],
   [ 't' ],
   [ 'u' ],
   [ 'v' ],
   [ 'y', 'y' ]
]