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

Thêm hai mảng đối tượng với các thành viên hiện có và lặp lại của hai mảng JavaScript thay thế các mảng lặp lại

Chúng ta có các mảng đối tượng sau đây, chúng ta cần hợp nhất chúng thành một mảng, loại bỏ đối tượng có giá trị thừa cho tên thuộc tính -

const first = [{
   name: 'Rahul',
   age: 23
}, {
   name: 'Ramesh',
   age: 27
}, {
   name: 'Vikram',
   age: 35
}, {
   name: 'Harsh',
   age: 34
}, {
   name: 'Vijay',
   age: 21
}];
const second = [{
   name: 'Vijay',
   age: 21
}, {
   name: 'Vikky',
   age: 20
}, {
   name: 'Joy',
   age: 26
}, {
   name: 'Vijay',
   age: 21
}, {
   name: 'Harsh',
   age: 34
}, ]

Chúng tôi định nghĩa một hàm mergeArray, lấy hai mảng được kết hợp làm đối số và quay trở lại một mảng mới -

const combineArray = (first, second) => {
   const combinedArray = [];
   const map = {};
   first.forEach(firstEl => {
      if(!map[firstEl.name]){
         map[firstEl.name] = firstEl;
         combinedArray.push(firstEl);
      }
   });
   second.forEach(secondEl => {
      if(!map[secondEl.name]){
         map[secondEl.name] = secondEl;
         combinedArray.push(secondEl);
      }
   })
   return combinedArray;
}
console.log(combineArray(first, second));

Hàm này không chỉ đảm bảo loại bỏ các mục nhập trùng lặp khỏi mảng thứ hai, hơn nữa nếu tồn tại bất kỳ mục nhập trùng lặp nào trong mảng đầu tiên, nó cũng sẽ loại bỏ điều đó.

Đây là mã hoàn chỉnh -

Ví dụ

const first = [{
   name: 'Rahul',
   age: 23
}, {
   name: 'Ramesh',
   age: 27
}, {
   name: 'Vikram',
   age: 35
}, {
   name: 'Harsh',
   age: 34
}, {
   name: 'Vijay',
   age: 21
}];
   const second = [{
      name: 'Vijay',
      age: 21
}, {
   name: 'Vikky',
   age: 20
}, {
   name: 'Joy',
   age: 26
}, {
   name: 'Vijay',
   age: 21
}, {
   name: 'Harsh',
   age: 34
}, ]
const combineArray = (first, second) => {
   const combinedArray = [];
   const map = {};
   first.forEach(firstEl => {
      if(!map[firstEl.name]){
         map[firstEl.name] = firstEl;
         combinedArray.push(firstEl);
      }
   });
   second.forEach(secondEl => {
      if(!map[secondEl.name]){
         map[secondEl.name] = secondEl;
         combinedArray.push(secondEl);
      }
   })
   return combinedArray;
}
console.log(combineArray(first, second));

Đầu ra

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

[
   { name: 'Rahul', age: 23 },{ name: 'Ramesh', age: 27 },{ name: 'Vikram', age: 35 },
   { name: 'Harsh', age: 34 },{ name: 'Vijay', age: 21 },{ name: 'Vikky', age: 20 },
   { name: 'Joy', age: 26 }
]