Quiero actualizar esta matriz de objetos.
var a = [{"uuid":"93161c2b-6c56-4204-b6b5-c5c3cee0f38a","answer":"none"}, {"uuid":"93161c2b-6c56-4204-b6b5-c5c3cee0f38a","answer":"none"}, {"uuid":"93161c2b-6c56-4204-b6b5-c5c3cee0f38a","answer":"none"}, {"uuid":"e468c4ff-98c8-4d53-986e-529e4a199540","answer":"none"}, {"uuid":"f71835b7-b57a-4971-9f0b-ff0474fd495e","answer":"none"}, {"uuid":"93161c2b-6c56-4204-b6b5-c5c3cee0f38a","answer":"none"}]a
var a = [{"uuid":"93161c2b-6c56-4204-b6b5-c5c3cee0f38a","answer":"found it"}, {"uuid":"93161c2b-6c56-4204-b6b5-c5c3cee0f38a","answer":"found it"}, {"uuid":"93161c2b-6c56-4204-b6b5-c5c3cee0f38a","answer":"found it"}, {"uuid":"e468c4ff-98c8-4d53-986e-529e4a199540","answer":"none"}, {"uuid":"f71835b7-b57a-4971-9f0b-ff0474fd495e","answer":"none"}, {"uuid":"93161c2b-6c56-4204-b6b5-c5c3cee0f38a","answer":"found it"}]Esto solo actualiza la primera coincidencia en esta matriz, pero lo necesito para actualizar todas las coincidencias.
a.find(x => x.uuid == "93161c2b-6c56-4204-b6b5-c5c3cee0f38a").answer = "found it"Sé que puedo recorrer la matriz para cambiar cada respuesta que coincida con el uuid, pero ¿hay una mejor manera de hacerlo?
Una forma breve y sencilla de recorrerlos todos y cambiarlos sería con forEach :
var a = [{"uuid":"93161c2b-6c56-4204-b6b5-c5c3cee0f38a","answer":"none"}, {"uuid":"93161c2b-6c56-4204-b6b5-c5c3cee0f38a","answer":"none"}, {"uuid":"93161c2b-6c56-4204-b6b5-c5c3cee0f38a","answer":"none"}, {"uuid":"e468c4ff-98c8-4d53-986e-529e4a199540","answer":"none"}, {"uuid":"f71835b7-b57a-4971-9f0b-ff0474fd495e","answer":"none"}, {"uuid":"93161c2b-6c56-4204-b6b5-c5c3cee0f38a","answer":"none"}]; a.forEach((elem, idx) => { if (elem.uuid == "93161c2b-6c56-4204-b6b5-c5c3cee0f38a") { elem.answer = "found it"; } }); console.log(a); Alternativamente, puede usar map , otra forma abreviada de hacer de manera efectiva lo que describió. Devuelve una nueva matriz:
var a = [{"uuid":"93161c2b-6c56-4204-b6b5-c5c3cee0f38a","answer":"none"}, {"uuid":"93161c2b-6c56-4204-b6b5-c5c3cee0f38a","answer":"none"}, {"uuid":"93161c2b-6c56-4204-b6b5-c5c3cee0f38a","answer":"none"}, {"uuid":"e468c4ff-98c8-4d53-986e-529e4a199540","answer":"none"}, {"uuid":"f71835b7-b57a-4971-9f0b-ff0474fd495e","answer":"none"}, {"uuid":"93161c2b-6c56-4204-b6b5-c5c3cee0f38a","answer":"none"}]; a = a.map(elem => elem.uuid == "93161c2b-6c56-4204-b6b5-c5c3cee0f38a" ? ({ ...elem, answer: "found it" }) : elem); console.log(a); Tenga en cuenta que esto aún recorrerá la matriz, pero es una forma más ordenada de hacerlo (creando una nueva matriz basada en la original). Utilicé la sintaxis de difusión de objetos { ...elem } anterior para que también conserve otras propiedades en sus objetos si hay más. Otra forma más detallada de hacer esto sería:
var a = [{"uuid":"93161c2b-6c56-4204-b6b5-c5c3cee0f38a","answer":"none"}, {"uuid":"93161c2b-6c56-4204-b6b5-c5c3cee0f38a","answer":"none"}, {"uuid":"93161c2b-6c56-4204-b6b5-c5c3cee0f38a","answer":"none"}, {"uuid":"e468c4ff-98c8-4d53-986e-529e4a199540","answer":"none"}, {"uuid":"f71835b7-b57a-4971-9f0b-ff0474fd495e","answer":"none"}, {"uuid":"93161c2b-6c56-4204-b6b5-c5c3cee0f38a","answer":"none"}]; a = a.map(elem => { if (elem.uuid == "93161c2b-6c56-4204-b6b5-c5c3cee0f38a") { elem.answer = "found it"; } return elem; }); console.log(a);Hay 2 formas de lograr el resultado:
1) Usando forEach : (Forma preferida)
var data = [{"uuid":"93161c2b-6c56-4204-b6b5-c5c3cee0f38a","answer":"none"}, {"uuid":"93161c2b-6c56-4204-b6b5-c5c3cee0f38a","answer":"none"}, {"uuid":"93161c2b-6c56-4204-b6b5-c5c3cee0f38a","answer":"none"}, {"uuid":"e468c4ff-98c8-4d53-986e-529e4a199540","answer":"none"}, {"uuid":"f71835b7-b57a-4971-9f0b-ff0474fd495e","answer":"none"}, {"uuid":"93161c2b-6c56-4204-b6b5-c5c3cee0f38a","answer":"none"}] const updateRecord = (data, id) => { data.forEach((record) => { if(record.uuid === id){ record.answer = 'found it' } return record }) return data } console.log(updateRecord(data, "93161c2b-6c56-4204-b6b5-c5c3cee0f38a"))2) Usando el mapa :
var data = [{"uuid":"93161c2b-6c56-4204-b6b5-c5c3cee0f38a","answer":"none"}, {"uuid":"93161c2b-6c56-4204-b6b5-c5c3cee0f38a","answer":"none"}, {"uuid":"93161c2b-6c56-4204-b6b5-c5c3cee0f38a","answer":"none"}, {"uuid":"e468c4ff-98c8-4d53-986e-529e4a199540","answer":"none"}, {"uuid":"f71835b7-b57a-4971-9f0b-ff0474fd495e","answer":"none"}, {"uuid":"93161c2b-6c56-4204-b6b5-c5c3cee0f38a","answer":"none"}] const updatedData = data.map(record => record.uuid == "93161c2b-6c56-4204-b6b5-c5c3cee0f38a" ? ({ ...record, answer: "found it" }) : record); console.log(updatedData);