¿Por qué un mapa js en una matriz modifica la matriz original?
Estoy bastante confundido por el comportamiento de map ().
Tengo una serie de objetos como este:
const products = [{
...,
'productType' = 'premium',
...
}, ...]
y estoy pasando esta matriz a una función que debería devolver la misma matriz pero con todo el producto hecho gratis:
[{
...,
'productType' = 'free',
...
}, ...]
La función es:
const freeProduct = function(products){
return products.map(x => x.productType = "free")
}
Que devuelve la siguiente matriz:
["free", "free", ...]
Así que reescribí mi función para ser:
const freeProduct = function(products){
return products.map(x => {x.productType = "free"; return x})
}
Lo que devuelve la matriz según lo previsto.
PERO ! Y ese es el momento en que pierdo la cabeza, en ambos casos mi matriz de productos original se modifica.
La documentación sobre map () dice que no debería (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map )
Incluso intenté crear un clon de mi matriz convirtiendo mi función de esta manera
const freeProduct = function(products){
p = products.splice()
return p.map(x => {x.productType = "free"; return x})
}
Pero sigo obteniendo el mismo resultado (que comienza a volverme loco).
¡Estaría muy agradecido con cualquiera que pueda explicarme lo que estoy haciendo mal!
Gracias