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

Nhóm các đối tượng theo thuộc tính trong JavaScript

Giả sử, chúng ta có một mảng đối tượng chứa dữ liệu về một số loại trái cây và rau quả như thế này -

const arr = [
   {food: 'apple', type: 'fruit'},
   {food: 'potato', type: 'vegetable'},
   {food: 'banana', type: 'fruit'},
];

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.

Sau đó, hàm của chúng ta sẽ nhóm các đối tượng mảng dựa trên thuộc tính "type" của các đối tượng.

Có nghĩa là tất cả các đối tượng thuộc loại "trái cây" được nhóm lại với nhau và loại "rau" được nhóm lại với nhau một cách riêng biệt.

Ví dụ

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

const arr = [
   {food: 'apple', type: 'fruit'},
   {food: 'potato', type: 'vegetable'},
   {food: 'banana', type: 'fruit'},
];
const transformArray = (arr = []) => {
   const res = [];
   const map = {};
   let i, j, curr;
   for (i = 0, j = arr.length; i < j; i++) {
      curr = arr[i];
      if (!(curr.type in map)) {
         map[curr.type] = {type: curr.type, foods: []};
         res.push(map[curr.type]);
      };
      map[curr.type].foods.push(curr.food);
   };
   return res;
};
console.log(transformArray(arr));

Đầu ra

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

[
   { type: 'fruit', foods: [ 'apple', 'banana' ] },
   { type: 'vegetable', foods: [ 'potato' ] }
]