w3schools values sumar funcion ejemplos como array all javascript ecmascript-6 eslint

javascript - values - Cómo manejar la regla eslint no-param-reassign en las funciones Array.prototype.reduce()



sum all array values javascript (2)

Bueno, podría hacer (result, item) => Object.assign({}, result, {[item]: whatever}) para crear un nuevo objeto en cada iteración :-)

Si quiere engañar al cursor, puede usar => Object.assign(result, {[item]: whatever}) (que hace lo mismo que su código actual pero sin una asignación explícita), pero sí, supongo que simplemente debe deshabilitar esa regla

Recientemente he agregado la regla eslint no-param-reassign .

Sin embargo, cuando uso reduce para generar un objeto (objeto vacío como valor initialValue ), necesito modificar el accumulator (primer argumento de la función de devolución de llamada) en cada iteración de devolución de llamada, lo que provoca una queja de reenvío de no-param-reassign paramar (como uno esperaría que lo haría).

const newObject = [''a'', ''b'', ''c''].reduce((result, item, index) => { result[item] = index; // <-- causes the no-param-reassign complaint return result; }, {});

¿Hay una mejor manera de construir un objeto con reduce que no modifique el argumento del accumulator ?

¿O debería simplemente deshabilitar la regla de alineación para esa línea en mis funciones de reduce devolución de llamada?


Estoy revisando esta pregunta para publicar una nueva respuesta que finalmente se me ocurrió usando el operador de propagación de objetos ) ...

const newObject = [''a'', ''b'', ''c''].reduce((result, item, index) => ({ ...result, [item]: index, }), {});