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

Làm thế nào để lặp lại một mảng các đối tượng và tạo một mảng mới trong JavaScript?

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

const arr = [
   {
      "customer": "Customer 1",
      "project": "1"
   },
   {
      "customer": "Customer 2",
      "project": "2"
   },
   {
      "customer": "Customer 2",
      "project": "3"
   }
]

Chúng tôi được yêu cầu viết một hàm JavaScript nhận một mảng như vậy và tạo ra (trả về) một mảng mới.

Trong mảng mới, tất cả các khóa khách hàng có cùng giá trị phải được hợp nhất và đầu ra sẽ giống như thế này -

const output = [
   {
      "Customer 1": {
         "projects": "1"
      }
   },
   {
   "Customer 2": {
      "projects": [
         "2",
         "3"
      ]
   }
}
]

Ví dụ

Hãy để chúng tôi viết mã -

const arr = [
   {
      "customer": "Customer 1",
      "project": "1"
   },
   {
      "customer": "Customer 2",
      "project": "2"
   },
   {
      "customer": "Customer 2",
      "project": "3"
   }
]
const groupCustomer = data => {
   const res = [];
   data.forEach(el => {
      let customer = res.filter(custom => {
         return el.customer === custom.customer;
      })[0];
      if(customer){
         customer.projects.push(el.project);
      }else{
         res.push({ customer: el.customer, projects: [el.project] });
      };
   });
   return res;
};
console.log(groupCustomer(arr));

Đầu ra

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

[
   { customer: 'Customer 1', projects: [ '1' ] },
   { customer: 'Customer 2', projects: [ '2', '3' ] }
]