Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Kết hợp hai mảng khác nhau trong JavaScript

Giả sử chúng ta có hai mảng, mảng đầu tiên chứa ngày dự kiến cho một số sự kiện và mảng thứ hai chứa tên các sự kiện đó:

const dates = [    {       id:"1",       date:"2017-11-07"    },    {       id:"1",       date:"2017-11-08"    },    {       id:"2",       date:"2017-11-07"    },    {       id:"2",       date:"2017-11-08"    } ]; const names = [    {       id:"1",       name:"Pervies, Peter"    },    {       id:"2",       name:"Ming, Edmund"    } ]; 

Chúng ta cần viết hàm JavaScript nhận hai mảng như vậy và kết hợp tên sự kiện với ngày tương ứng dựa trên thuộc tính id.

Vì vậy, với các mảng này, đầu ra nên trông như:

const output = [    {       id:"1",       name:"Pervies, Peter",       details:[          {date:"2017-11-07"},          {date:"2017-11-08"}       ]    },    {       id:"2",       name:"Ming, Edmund",       details:[          {date:"2017-11-07"},          {date:"2017-11-08"}       ]    } ]

Ví dụ

Mã cho việc này:

const dates = [    {       id:"1",       date:"2017-11-07"    },    {       id:"1",       date:"2017-11-08"    },    {       id:"2",       date:"2017-11-07"    },    {       id:"2",       date:"2017-11-08"    } ]; const names = [    {       id:"1",       name:"Pervies, Peter"    },    {       id:"2",       name:"Ming, Edmund"    } ]; const combineArrays = (dates, names) => {    const res = [];    dates.forEach(el => {       const bool = !res.some(item => {          return item.id == el.id;       });       if(bool){          let combined = {};          combined.id = el.id;          combined.details = combined.details || [];          combined.details.push({               "date": el.date           });          res.push(combined);       }else{          res.find(item => {             return item.id === el.id;          })          .details.push({               "date": el.date           });       };    });    res.forEach(el => {       const bool = names.some(item => {          return item.id === el.id;       });       if(bool){          el.name = names.find(name => {             return name.id === el.id;          }).name;       };    });    return res; }; console.log(JSON.stringify(combineArrays(dates, names), undefined, 4));

Đầu ra

Kết quả trên console:

[    {       "id": "1",       "details": [          {             "date": "2017-11-07"          },          {             "date": "2017-11-08"          }       ],       "name": "Pervies, Peter"    },    {       "id": "2",       "details": [          {             "date": "2017-11-07"          },          {             "date": "2017-11-08"          }       ],       "name": "Ming, Edmund"    } ]