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

Gộp hai mảng đối tượng, loại bỏ phần tử trùng lặp theo thuộc tính name

Cho hai mảng đối tượng, cần gộp thành một mảng, loại bỏ các đối tượng có giá trị trùng lặp cho thuộc tính name.

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 }]

Định nghĩa hàm combineArray nhận hai mảng và trả về 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ỉ loại trùng trong mảng thứ hai, mà cả trong mảng đầu tiên nếu có.

Ví dụ hoàn chỉ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 }] 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));

Kết quả

Đầu ra console:

[ { 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 } ]