Tengo un objeto JSON llamado users así:
[{"givenName":"helen","sn":"brown","phone":"44512","details":"512"},{{"givenName":"John","sn":"Doe","phone":"44600","details":"512"}] Aplico el método json.stringify para convertir este objeto JavaScript en una cadena JSON. Luego, uso replace para reemplazar el valor 512 con active . Aquí está mi código para implementar esto:
var jsonUsers = JSON.stringify(users).replace(/512/g, 'active'); El problema es que cuando uso este código, reemplaza todos los 512 con active (por ejemplo, en mi ejemplo, cambia los valores de los details y también cambia el valor del phone de la primera persona con algo como 44active ), pero quiero aplicar esto reemplazo solo en los valores de la clave de details , no en toda la cadena (por ejemplo, no quiero verificar y reemplazar el valor del phone ). ¿Cómo puedo hacer esto?
No intente reemplazar partes de un JSON. Arréglalo mientras es un objeto en su lugar.
const arr = [{"givenName":"helen","sn":"brown","phone":"44512","details":"512"},{"givenName":"John","sn":"Doe","phone":"44600","details":"512"}]; for (const item of arr) { if (item.details === '512') { item.details = 'active'; } } console.log(JSON.stringify(arr));const users = [{"givenName":"helen","sn":"brown","phone":"44512","details":"512"},{"givenName":"John","sn":"Doe","phone":"44600","details":"512"}]Ahora usa array.map()
const newArray = users.map(e => { return {...e, details: e.details==512 ? "active" : e.details}; });Si solo desea reemplazar el texto de la propiedad de detalles, no es necesario convertir todo el objeto en una cadena. Simplemente puede iterar sobre la matriz usando el método Array.map() y luego reemplazar el valor de la propiedad de details en función de la regex .
Prueba esto :
const jsonObj = [{ "givenName": "helen", "sn": "brown", "phone": "44512", "details": "512" }, { "givenName": "John", "sn": "Doe", "phone": "44600", "details": "512" }]; const res = jsonObj.map(obj => { obj.details = obj.details.replace(/512/g, 'active'); return obj; }); console.log(res);