You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中按用户统计JSON数组内的商品价格总和?

解决用户商品价格总和统计问题

嗨,我看了你的代码,问题出在priceSum变量没有在每个用户的循环开始前重置——它一直在累加所有用户的商品价格,自然没法区分每个用户的单独总和啦。

问题根源

你原来的代码里,priceSum是在函数最外层定义的,每次循环处理新用户时,它不会自动归零,导致第二个用户的总和是第一个用户加第二个用户的价格,第三个用户的总和是前三个的累加,这就完全不符合你的需求了。

修正后的循环版本

把priceSum的定义移到外层循环(处理每个用户的循环)内部,这样每次处理新用户时,都会重新初始化priceSum为0,确保每个用户的价格总和是独立计算的:

var json = [ 
  { "name" : " KYLE 1", "addr" : " SEOUL", "buyproducts" : [ { "prodname": "prod1", "price": 100.2, "date": "2003-01-04"},{ "prodname": "prod2", "price": 100.2, "date": "2003-06-04"},{ "prodname": "prod3", "price": 100.2, "date": "2003-08-04"} ]}, 
  { "name" : " KYLE 2", "addr" : " SEOUL", "buyproducts" : [ { "prodname": "prod4", "price": 13.2, "date": "2003-03-04"},{ "prodname": "prod5", "price": 633.2, "date": "2003-07-04"},{ "prodname": "prod6", "price": 542.2, "date": "2003-01-04"} ]}, 
  { "name" : " KYLE 3", "addr" : " SEOUL", "buyproducts" : [ { "prodname": "prod1", "price": 75.2, "date": "2003-01-04"},{ "prodname": "prod2", "price": 35.2, "date": "2004-07-04"},{ "prodname": "prod3", "price": 52.2, "date": "2005-02-04"} ]} 
];

var totalCost = function(arr){ 
  var array = []; 
  // 把priceSum移到外层循环内,每个用户都重新初始化
  for (var i = 0; i < arr.length; i++){ 
    var priceSum = 0;
    for (var j = 0; j < arr[i].buyproducts.length; j++){ 
      priceSum += arr[i].buyproducts[j].price; 
    } 
    array.push(priceSum);
    console.log(arr[i].name + ": " + priceSum);
  } 
  // 返回结果数组,方便后续使用
  return array;
};
totalCost(json);

运行这段代码后,你就能得到正确的结果:

  • KYLE 1: 300.6
  • KYLE 2: 1188.6
  • KYLE 3: 162.6

更简洁的现代JS写法

如果你习惯用更简洁的数组方法,也可以用map和reduce来实现,代码可读性更高:

var totalCost = function(arr){
  return arr.map(user => {
    // 用reduce计算当前用户的商品总价,初始值设为0
    const sum = user.buyproducts.reduce((total, product) => total + product.price, 0);
    console.log(`${user.name}: ${sum}`);
    return sum;
  });
};
totalCost(json);

这个版本里,map遍历每个用户,reduce专门用来计算每个用户的商品价格总和,每个用户的计算都是独立的,完全不会出现累加混乱的问题。

内容的提问来源于stack exchange,提问作者Kim Kyle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 11:18:10