Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将数组中对象的所有值相加,但乘以数量_Javascript_Reactjs_React Hooks - Fatal编程技术网

Javascript 将数组中对象的所有值相加,但乘以数量

Javascript 将数组中对象的所有值相加,但乘以数量,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,我想为我的应用程序创建有购物车的逻辑。所以,当用户点击购物车时,可以看到购物车中的商品,也可以看到总价。我所拥有的是一个钩子,它将所有对象存储在里面,如下所示: [{ foodName: "Njoki with sos" foodPrice: 35 numberOfPortions: 1 }, { foodName: "Chicken Wingos" foodPrice: 45 numberOfPortions: 2 }] useEffect(() =

我想为我的应用程序创建有购物车的逻辑。所以,当用户点击购物车时,可以看到购物车中的商品,也可以看到总价。我所拥有的是一个钩子,它将所有对象存储在里面,如下所示:

[{
foodName: "Njoki with sos"
foodPrice: 35
numberOfPortions: 1
}, 
{
foodName: "Chicken Wingos"
foodPrice: 45
numberOfPortions: 2
}]
useEffect(() => {
    cartFood.map((food) => {
      return priceArray.push(food.foodPrice * food.numberOfPortions);
    });
  }, [cartFood]);

  let priceArray = [];

  let cartTotalPrice = priceArray.reduce((a, b) => a + b, 0);
我创建了如下逻辑:

[{
foodName: "Njoki with sos"
foodPrice: 35
numberOfPortions: 1
}, 
{
foodName: "Chicken Wingos"
foodPrice: 45
numberOfPortions: 2
}]
useEffect(() => {
    cartFood.map((food) => {
      return priceArray.push(food.foodPrice * food.numberOfPortions);
    });
  }, [cartFood]);

  let priceArray = [];

  let cartTotalPrice = priceArray.reduce((a, b) => a + b, 0);
但它不起作用,cartTotal价格是0,即使它应该是125,而且我在编译器中收到React的通知“React Hook useEffect缺少依赖项:'priceArray'。要么包含它,要么删除依赖项数组”,所以我想有更好的方法来做。。。 我做错了什么?写这个逻辑的最好方法是什么


非常感谢

您可以使用这两种方法中的任何一种来循环您的阵列并获得总价格

弗雷奇 for循环 减少
如果您对
Array.prototype.map()
的返回值不感兴趣,那么
.map()
不是合适的工具。@Andreas您好,我也尝试过forEach(),但结果相同,0
var total=[/*yourarray*/].reduce(函数(acc,cur){return acc+cur.foodPrice*cur.numberofparties;},0)
let totalPrice = 0;

for (let value of values) {
  totalPrice += value.foodPrice * value.numberOfPortions;
}
const totalPrice = values.reduce(
  (acc, cur) => acc + cur.foodPrice * cur.numberOfPortions,
  0
);