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

Gộp mảng với đối tượng chứa mảng giá trị - 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 ta cần "zip" mảng và đối tượng sao cho các giá trị trong mảng được gán cho các đối tượng mới được khóa bởi các giá trị trong đối tượng.

Kết quả mong đợi:

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

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

Ví dụ

Dưới đây là đoạn code:

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));

Kết quả

Đoạn code sẽ in ra console:

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