He tenido problemas para entender por qué la temperatura se ve afectada aquí. Al mirar la consola al ejecutar este código:
const objectsArray = [ {'id': 1, 'name': 'Erik', 'yearsCompleted': 2, 'status': 'student'}, {'id': 2, 'name': 'Carol', 'yearsCompleted': 1, 'status': 'student'}, {'id': 3, 'name': 'Sarah', 'yearsCompleted': 4, 'status': 'student'} ]; temp = { actions: objectsArray.map(student => { if (student.yearsCompleted === 4) student.status = 'wow'; return student }) } console.log(temp) temp2 = { actions: objectsArray.map(student => { if (student.yearsCompleted === 4) student.status = 'foo'; return student }) } console.log(temp) console.log(temp2)Termino obteniendo el siguiente resultado:
{ actions: [ { id: 1, name: 'Erik', yearsCompleted: 2, status: 'student' }, { id: 2, name: 'Carol', yearsCompleted: 1, status: 'student' }, { id: 3, name: 'Sarah', yearsCompleted: 4, status: 'wow' } ] } { actions: [ { id: 1, name: 'Erik', yearsCompleted: 2, status: 'student' }, { id: 2, name: 'Carol', yearsCompleted: 1, status: 'student' }, { id: 3, name: 'Sarah', yearsCompleted: 4, status: 'foo' } ] } { actions: [ { id: 1, name: 'Erik', yearsCompleted: 2, status: 'student' }, { id: 2, name: 'Carol', yearsCompleted: 1, status: 'student' }, { id: 3, name: 'Sarah', yearsCompleted: 4, status: 'foo' } ] }¿Por qué se ve afectada la temperatura en este caso? ¿Obtenemos una referencia a la matriz de objetos al establecer la propiedad de acciones de la temperatura en la función de objetosArray.map? Pensé que la temperatura no se vería afectada en este caso. Gracias.
Esto se debe a que student.status = 'foo' cambia el elemento real en la matriz temp . Debe hacer una copia y devolverla usando el operador de extensión ( ... ) como se muestra a continuación.
const objectsArray = [{ 'id': 1, 'name': 'Erik', 'yearsCompleted': 2, 'status': 'student' }, { 'id': 2, 'name': 'Carol', 'yearsCompleted': 1, 'status': 'student' }, { 'id': 3, 'name': 'Sarah', 'yearsCompleted': 4, 'status': 'student' } ]; temp = { actions: objectsArray.map(student => { if (student.yearsCompleted === 4) { return { ...student, status: 'wow' } }; return student }) } console.log(temp) temp2 = { actions: objectsArray.map(student => { if (student.yearsCompleted === 4) { return { ...student, status: 'foo' } }; return student }) } console.log(temp) console.log(temp2)