javascript - 有没有更好的方法用 map 或 reduce 重构这个 for 循环?
问题描述
我对javascript有点陌生,所以请善待。我有一个包含 for 循环的帖子。而且我想用 .map 重新编写循环,因为看起来我可以在这里这样做(有更好的方法吗?)我该怎么做?
这是我的代码..
app.post('/api/products', (req, res) => {
let products = [];
let id = null;
let cart = JSON.parse(req.body.cart);
if (!cart) return res.json(products);
// TODO: replace for loop with .map
for (var i = 0; i < data.products.length; i++) {
id = data.products[i].id.toString();
if (cart.hasOwnProperty(id)) {
data.products[i].qty = cart[id];
products.push(data.products[i]);
}
}
return res.json(products);
});
解决方案
我不认为你可以重写它,map
除非你想要你的数组中有空元素。可能应该使用reduce
(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce):
let products = data.products.reduce((result, product) => {
id = product.id.toString();
if (cart.hasOwnProperty(id)) {
product.qty = cart[id];
result.push(product);
}
return result;
}, []);
我还没有测试过,但它应该可以工作。
推荐阅读
- c# - 如何在 MVC 应用程序上进行 ADFS 身份验证后向 ClaimsPrincipal 添加其他声明
- go - 为什么这种关于方法指针和全局变量初始化的行为在 Go 中是正确的?
- javascript - jQuery 验证仅适用于所有其他提交
- selenium - Jenkins 上的 Selenium ChromeDriver 在执行测试时抛出 Chrome 版本错误
- vb.net - 如何修复此类错误 System.Diagnostics.DebuggerStepThrough()
- php - 在 php 中使用 $i var 到 sql 查询中
- dropdown - 这个效果怎么做?
- sql-server - 将值列表传递给 JPA 存储库中的 sql 过程
- sql - 将查询从 SQL Server 转换为 Oracle
- python - 重新采样数据 pandas