Duyệt mảng, nếu tìm thấy object khớp điều kiện (so sánh listOfSubject) thì cập nhật, ngược lại push() object mới.
Ví dụ
var students = [
{ firstName: "John", listOfSubject: ['MySQL', 'MongoDB'] },
{ firstName: "David", listOfSubject: ['Java', 'C'] }
];
var newStudent = { firstName: "Bob", listOfSubject: ['JavaScript'] };
function upsertStudent(arr, newObj) {
for (var i = 0; i < arr.length; i++) {
// So sánh mảng subject (chuyển thành chuỗi)
if (arr[i].listOfSubject.join("") === newObj.listOfSubject.join("")) {
arr[i] = newObj; // Cập nhật
return;
}
}
arr.push(newObj); // Thêm mới
}
upsertStudent(students, newStudent);
console.log(students);
Cách chạy
node demo.js
Kết quả
[
{ firstName: 'John', listOfSubject: [ 'MySQL', 'MongoDB' ] },
{ firstName: 'David', listOfSubject: [ 'Java', 'C' ] },
{ firstName: 'Bob', listOfSubject: [ 'JavaScript' ] }
]
Lưu ý: So sánh mảng bằng join("") chỉ đúng nếu thứ tự phần tử giống hệt. Dùng JSON.stringify() hoặc so sánh sâu cho chắc chắn.