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

Hợp nhất hai mảng đối tượng theo key duy nhất trong JavaScript

Cho hai mảng đối tượng:

const arr1 = [ 
  {name:'test', lastname: 'test', gender:'f'}, 
  {name:'test1', lastname: 'test1', gender:'f'}, 
  {name:'test2', lastname: 'test2', gender:'m'} 
]; 
const arr2 = [ 
  {name:'test21', lastname: 'test21', gender:'f'}, 
  {name:'test1', lastname: 'test1', gender:'f'}, 
  {name:'test2', lastname: 'test2', gender:'m'}, 
  {name:'test22', lastname: 'test22', gender:'m'} 
];

Mỗi mảng không trùng lặp nội bộ (theo name), nhưng giữa hai mảng có name trùng. Gộp unique theo name.

Ví dụ

const arr1 = [ 
  {name:'test', lastname: 'test', gender:'f'}, 
  {name:'test1', lastname: 'test1', gender:'f'}, 
  {name:'test2', lastname: 'test2', gender:'m'} 
]; 
const arr2 = [ 
  {name:'test21', lastname: 'test21', gender:'f'}, 
  {name:'test1', lastname: 'test1', gender:'f'}, 
  {name:'test2', lastname: 'test2', gender:'m'}, 
  {name:'test22', lastname: 'test22', gender:'m'} 
]; 
const mergeUniquely = (arr1 = [], arr2 = []) => { 
  const newArr = arr1.concat(arr2); 
  const map = {}; 
  const res = []; 
  newArr.forEach(el => { 
    if(!map[el['name']]){ 
      res.push(el); 
      map[el['name']] = 1; 
    }; 
  }); 
  return res; 
}; 
console.log(mergeUniquely(arr1, arr2));

Kết quả

Kết quả in ra console:

[ 
  { name: 'test', lastname: 'test', gender: 'f' }, 
  { name: 'test1', lastname: 'test1', gender: 'f' }, 
  { name: 'test2', lastname: 'test2', gender: 'm' }, 
  { name: 'test21', lastname: 'test21', gender: 'f' }, 
  { name: 'test22', lastname: 'test22', gender: 'm' } 
]