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

Nhóm các đối tượng bên trong JavaScript mảng lồng nhau

Giả sử e có một parentArray chứa nhiều mảng con có cùng kích thước, mỗi mảng con là một mảng các đối tượng có chứa hai thuộc tính:khóa và giá trị. Trong một mảng con, người ta xác nhận rằng hai đối tượng không thể có cùng một khóa nhưng tất cả các mảng con đều có cùng một cặp n khóa, trong đó n là kích thước của mảng con.

Công việc của chúng ta là chuẩn bị một đối tượng có khóa là khóa của các đối tượng và giá trị là một mảng chứa tất cả các giá trị cho khóa cụ thể đó.

Đây là mảng mẹ mẫu của chúng tôi -

const parentArray = [[
   {
      key: 123,
      value: 'India'
   }, {
      key: 124,
      value: 'USA'
   }, {
      key: 125,
      value: 'Japan'
   }, {
      key: 126,
      value: 'Denmark'
   }, {
         key: 127,
      value: 'Austria'
   },
], [
   {
      key: 124,
      value: 'Kenya'
   }, {
      key: 126,
      value: 'UK'
   }, {
      key: 123,
      value: 'Germany'
   }, {
      key: 127,
      value: 'Spain'
   }, {
      key: 125,
      value: 'Portugal'
   },
]];

Chúng tôi sẽ lặp qua mảng mẹ và sau đó lần lượt tất cả các mảng con và nếu chúng tôi tìm thấy khóa phù hợp, chúng tôi đẩy nó vào mảng giá trị, nếu không, chúng tôi tạo một mảng giá trị mới.

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

Ví dụ

const parentArray = [[
   {
      key: 123,
      value: 'India'
   }, {
      key: 124,
      value: 'USA'
   }, {
      key: 125,
      value: 'Japan'
   }, {
      key: 126,
      value: 'Denmark'
   }, {
      key: 127,
      value: 'Austria'
   },
], [
   {
      key: 124,
      value: 'Kenya'
   }, {
      key: 126,
      value: 'UK'
   }, {
      key: 123,
      value: 'Germany'
   }, {
      key: 127,
      value: 'Spain'
   }, {
      key: 125,
      value: 'Portugal'
   },
]];
const map = {};
parentArray.forEach(arr => {
   arr.forEach(obj => {
      const { key, value } = obj;
      if(map[key]){
         map[key].push(value);
      }else{
         map[key] = [value]
      }
   })
});
console.log(map);

Đầu ra

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

{
   '123': [ 'India', 'Germany' ],
   '124': [ 'USA', 'Kenya' ],
   '125': [ 'Japan', 'Portugal' ],
   '126': [ 'Denmark', 'UK' ],
   '127': [ 'Austria', 'Spain' ]
}