javascript - 我无法使用在同一对象内创建的方法修改对象的属性。我正在尝试使用 foreach 然后 console.log 未定义
问题描述
代码:
let references = [
{ nombre: 'productA', priceUsd: 2200, qty: 15 },
{ nombre: "productB", priceUsd: 1500, qty: 20 },
{ nombre: "productC", priceUsd: 3000, qty: 7 }
];
const store = {
products: references,
increasePrice: function(percToAdd) {
return this.products.forEach(item =>item['priceUsd']=item.priceUsd*(1+percToAdd/100));}
}
const increased = store.increasePrice(30);
console.log(increased)
输出:
undefined
但我正在寻找这样的东西:
[
{ nombre: 'productA', priceUsd: 2860, qty: 15 },
{ nombre: "productB", priceUsd: 1950, qty: 20 },
{ nombre: "productC", pricesUsd: 3900, qty: 7 }
]
我在方法之外尝试了代码,它可以工作,但是当我把它放在一个函数中时,它就不再工作了。
解决方案
这是因为forEach
不返回值(修改数组)而是对数组的每个元素执行某些操作。
您可以使用map
这种情况。
let references = [
{ nombre: 'productA', priceUsd: 2200, qty: 15 },
{ nombre: "productB", priceUsd: 1500, qty: 20 },
{ nombre: "productC", priceUsd: 3000, qty: 7 }
];
const store = {
products: references,
increasePrice: function (percToAdd) {
return this.products.map(item => ({ ...item, ["priceUsd"]: item.priceUsd * (1 + percToAdd / 100) }));
}
}
const increased = store.increasePrice(30);
console.log(increased)
priceUsd
此外,您在最后一项中拼写错误references
。
推荐阅读
- image - 为什么 multiprocessing.Pool 会因大量项目而变慢
- kubernetes-helm - 使用 Helm 的不同部署配置
- r - rmarkdown 笔记本中的 bookdown 扩展
- wordpress - wordpress (avada) https: ERR_CONNECTION_REFUSED 在一些资源上
- javascript - 如何正确处理异步错误?
- html - XSD 组枚举项
- angular - 如果 Chrome 显示通知对话框以 X 关闭,则应用程序失去焦点
- macos - 为什么我的 Mac Book Pro 没有完成两步验证步骤
- python - Pysftp 包在 lambda 函数抛出错误中不起作用:无法从“bcrypt”(./lib/bcrypt/__init__.py)导入名称“_bcrypt”
- phabricator - 如何使用 Phabricator 数据源类型自定义字段的“datasource.parameters”属性?