Cambiar una propiedad por id en JavaScript

Puede que necesites cambiar no todo el objeto, sino una propiedad concreta. Veamos cómo se hace.

Supongamos que en la variable arr hay un array de objetos:

javascriptlet arr = [
  {
    id: 'GYi9GauC4gBF1e2SixDvu',
    prop1: 'value11',
    prop2: 'value12',
    prop3: 'value13',
  },
  {
    id: 'IWSpfBPSV3SXgRF87uO74',
    prop1: 'value21',
    prop2: 'value22',
    prop3: 'value23',
  },
  {
    id: 'JAmjRlfQT8rLTm5tG2m1L',
    prop1: 'value31',
    prop2: 'value32',
    prop3: 'value33',
  },
];

Supongamos que en variables se almacenan el id del elemento, el nombre de la propiedad a cambiar y el nuevo valor de la propiedad:

javascriptlet id = 'IWSpfBPSV3SXgRF87uO74';
let prop = 'prop1';
let value = '!!!';

Para resolver el problema es conveniente usar la desestructuración y nombres de propiedades calculados:

javascriptlet res = arr.map(elem => {
  if (elem.id === id) {
    return {...elem, [prop]: value};
  } else {
    return elem;
  }
});
Задание 1

Se dan las siguientes variables:

javascriptlet id = 'JAmjRlfQT8rLTm5tG2m1L';
let prop = 'prop2';

Crea un botón, al pulsar el cual se tomará el elemento del array con el id especificado, en él se tomará la propiedad con el nombre especificado y al final del valor de esta propiedad se añadirá el signo '!'.

Задание 2

Supongamos que se dan dos variables con nombres de propiedades:

javascriptlet id = 'JAmjRlfQT8rLTm5tG2m1L';
let prop1 = 'prop2';
let prop2 = 'prop3';

Modifica la tarea anterior para que al hacer clic los cambios se realicen inmediatamente para las dos propiedades indicadas.

Задание 3

Rehace la solución presentada en la teoría usando la copia de objetos con Object.assign.