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

Nhóm theo phần tử trong JavaScript mảng

Giả sử, chúng ta có một mảng các đối tượng như thế này -

const arr = [
   {"name": "toto", "uuid": 1111},
   {"name": "tata", "uuid": 2222},
   {"name": "titi", "uuid": 1111}
];

Chúng tôi được yêu cầu viết một hàm JavaScript để chia các đối tượng thành các mảng riêng biệt có các giá trị tương tự cho thuộc tính uuid.

Đầu ra

Do đó, đầu ra sẽ giống như thế này -

const output = [
   [
      {"name": "toto", "uuid": 1111},
      {"name": "titi", "uuid": 1111}
   ],
   [
      {"name": "tata", "uuid": 2222}
   ]
];

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

const arr = [
   {"name": "toto", "uuid": 1111},
   {"name": "tata", "uuid": 2222},
   {"name": "titi", "uuid": 1111}
];
const groupByElement = arr => {
   const hash = Object.create(null),
   result = [];
   arr.forEach(el => {
      if (!hash[el.uuid]) {
         hash[el.uuid] = [];
         result.push(hash[el.uuid]);
      };
      hash[el.uuid].push(el);
   });
   return result;
};
console.log(groupByElement(arr));

Đầu ra

Đầu ra trong bảng điều khiển -

[
   [ { name: 'toto', uuid: 1111 }, { name: 'titi', uuid: 1111 } ],
   [ { name: 'tata', uuid: 2222 } ]
]