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

如何计算JavaScript嵌套数组shoppingcart中products的price平均值

JavaScript嵌套数组提取price计算平均值实现方案

直接使用数组内置方法即可实现需求,可运行代码如下:

let shoppingcart = [
      {
        orderId: 100000,
        dayofWeeks:  "May.06.2020",
        products: [
          { productId: 1111, quantity: 3, price: 3.0 }
        ]
      },
      
      {
        orderId: 100001,
        dayofWeeks: "Aug.12.2020",
        products: [
          { productId: 1111, quantity: 1, price: 3.0 },
          { productId: 1112, quantity: 1, price: 1.0 }
        ]
      },
];

// 提取所有商品的price到一维数组
const allPrices = shoppingcart.flatMap(order => order.products.map(product => product.price));

// 输出所有price值
allPrices.forEach(price => {
  console.log(`price: ${price.toFixed(1)}`);
});

// 计算算术平均值
const totalPrice = allPrices.reduce((sum, current) => sum + current, 0);
const average = (totalPrice / allPrices.length).toFixed(2);

// 输出最终平均值
console.log(`average: ${average}`);

代码说明

  • flatMap会遍历所有订单,把每个订单下的products数组中的price提取后自动摊平为一维数组,你的示例中得到的allPrices值为[3, 3, 1]
  • toFixed(1)用于保证输出的price保留1位小数,符合要求的输出格式
  • reduce方法用于累加所有price得到总和,总和除以price的总数量得到平均值,toFixed(2)控制平均值保留2位小数

运行输出结果

price: 3.0
price: 3.0
price: 1.0
average: 2.33

旧环境兼容方案

如果需要兼容不支持ES2019 flatMap的运行环境,可将提取allPrices的代码替换为:

const allPrices = [].concat.apply([], shoppingcart.map(order => order.products.map(p => p.price)));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:15:02