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

Cách hợp nhất một mảng với một đối tượng trong đó các giá trị là mảng - JavaScript

Giả sử, chúng ta có một mảng và một đối tượng như sau -

const arr = [1, 2, 3, 4, 5];
const obj = {
   group1: ["Ram", "Mohan", "Shyam"],
   group2: ["Jai", "Dinesh"],
};

Chúng tôi bắt buộc phải nén mảng và đối tượng để các giá trị trong mảng được gán cho các đối tượng mới được khóa bằng các giá trị trong đối tượng.

Như thế này -

const output = {
   group1: {
       "Ram": 1,
       "Mohan": 2,
       "Shyam": 3
   },
   group2: {
       "Jai": 4,
       "Dinesh": 5
   }
};

Chúng tôi sẽ lặp lại từng mục mảng và đồng thời gán giá trị cho các khóa của đối tượng mới.

Ví dụ

Sau đây là mã -

const arr = [1, 2, 3, 4, 5];
const obj = {
   group1: ["Ram", "Mohan", "Shyam"],
   group2: ["Jai", "Dinesh"],
};
const zipObject = (arr, obj) => {
   const res = {};
   for(let i = 0; i < arr.length; i++){
      if(obj['group1'][i]){
         if(!res['group1']){
            res['group1'] = {};
         };
         res['group1'][obj['group1'][i]] = arr[i];
      }else{
         if(!res['group2']){
            res['group2'] = {};
         }
         res['group2'][obj['group2'][i - obj['group1'].length]] =
         arr[i];
      };
   };
   return res;
};
console.log(zipObject(arr, obj));

Đầu ra

Điều này sẽ tạo ra kết quả sau trong bảng điều khiển -

{
   group1: { Ram: 1, Mohan: 2, Shyam: 3 },
   group2: { Jai: 4, Dinesh: 5 }
}