我对 map() 的行为感到很困惑。
我有一个像这样的对象数组:
const products = [{
...,
'productType' = 'premium',
...
}, ...]
我将这个数组传递给一个函数,该函数应该返回相同的数组,但所有产品都是免费的:
[{
...,
'productType' = 'free',
...
}, ...]
功能是:
const freeProduct = function(products){
return products.map(x => x.productType = "free")
}
它返回以下数组:
["free", "free", ...]
所以我将我的函数改写为:
const freeProduct = function(products){
return products.map(x => {x.productType = "free"; return x})
}
它按预期返回数组。
但 !那是我松懈的时刻,在这两种情况下,我的原始产品数组都被修改了。
围绕 map() 的文档说它不应该(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)。
我什至尝试创建我的数组的克隆,将我的函数变成这样:
const freeProduct = function(products){
p = products.splice()
return p.map(x => {x.productType = "free"; return x})
}
但我仍然得到相同的结果(这开始让我发疯)。
我将非常感谢任何可以向我解释我做错了什么的人!
谢谢你。