Hola, estoy agregando la cadena 'a' al comienzo del valor del name . También agregué una condición en la que si el valor de name.length === 3 , luego agregue la cadena 'a ' pero solo devuelve los objetos que se modifican y solo la propiedad del name .
var values1 = [ { name: 'dog', surname: 'good', skills: 'programming', }, { name: 'cat', surname: 'soft', skills: 'engineer', }, { name: 'elephant', surname: 'big', skills: 'programming', }, ]; let array = []; for (let i = 0; i < values1.length; i++) { if (values1[i]['name'].length == 3) { array.push({ name: 'a ' + values1[i]['name'] }); } } for (let i = 0; i < array.length; i++) { console.log(array[i]); }Este es el resultado que me gustaría devolver.
[ { name: 'a dog', surname: 'good', skills: 'programming', }, { name: 'a cat', surname: 'soft', skills: 'engineer', }, { name: 'elephant', surname: 'big', skills: 'programming', }, ];Aquí hay un ejemplo usando map() y desestructurando la propiedad de name en la devolución de llamada.
var values1 = [ { name: 'dog', surname: 'good', skills: 'programming' }, { name: 'cat', surname: 'soft', skills: 'engineer' }, { name: 'elephant', surname: 'big', skills: 'programming' }, ]; const result = values1.map(({ name, ...rest }) => ({ name: (name.length === 3 ? `a ${name}` : name), ...rest })); console.log(result); Pero para que su código funcione, simplemente debe asegurarse de enviar todo el objeto, independientemente de si se cambia el nombre o no. Aquí creando una copia del objeto usando Object.assign() actualizando el name si es necesario, luego empujando la copia a la matriz.
var values1 = [ { name: 'dog', surname: 'good', skills: 'programming', }, { name: 'cat', surname: 'soft', skills: 'engineer', }, { name: 'elephant', surname: 'big', skills: 'programming', }, ]; let array = []; for (let i = 0; i < values1.length; i++) { const obj = Object.assign({}, values1[i]); if (obj['name'].length === 3) { obj.name = 'a ' + obj['name']; } array.push(obj); } for (let i = 0; i < array.length; i++) { console.log(array[i]); }Está bastante cerca, pero en lugar de agregar una clave de nombre ( push() ), desea reasignar el valor del campo de name .
var values1 = [ { name: 'dog', surname: 'good', skills: 'programming', }, { name: 'cat', surname: 'soft', skills: 'engineer', }, { name: 'elephant', surname: 'big', skills: 'programming', }, ]; for (let i = 0; i < values1.length; i++) { if (values1[i]['name'].length == 3) { values1[i]['name'] = 'a ' + values1[i]['name']; } } console.log(values1)Modifiqué la matriz existente en lugar de agregar una nueva. No creo que sea peligroso ya que estamos actualizando una primitiva.