Tengo una variedad de objetos.
const target = [{name: 'srk@gmail.com', selected: false, alertType: 'max'}, {name: 'abc@gmail.com', selected: true, alertType: 'clear'},]ahora quiero actualizar la matriz según el nombre y el tipo de alerta. por ejemplo: si el nombre y el tipo de alerta coinciden, actualice la propiedad seleccionada. si eso no coincide, agregue un nuevo Objeto. nuevo objeto es
const = {name: 'srk@gmail.com', selected: false, alertType: 'both'}Puede usar Array.find() para encontrar elementos coincidentes. Luego actualizaría si se ha encontrado un elemento existente, o agregaría uno nuevo si no:
const target = [ {name: 'srk@gmail.com', selected: false, alertType: 'max'}, {name: 'abc@gmail.com', selected: true, alertType: 'clear'} ]; const update = { name: 'srk@gmail.com', selected: false, alertType: 'both' }; function updateAlerts(input, update) { let foundAlert = input.find(alert => ((alert.alertType === update.alertType) && (alert.name === update.name))); if (foundAlert) { foundAlert.selected = update.selected; } else { input.push(update); } } updateAlerts(target, { name: 'srk@gmail.com', selected: false, alertType: 'both' }) console.log(target); updateAlerts(target, { name: 'srk@gmail.com', selected: true, alertType: 'max' }) console.log(target); .as-console-wrapper { max-height: 100% !important; top: 0; }