js 使用 :解释数据结构、分组汇总

一、 JSON.parse 妙用

用如下语句打印:

console.info(result);
      console.info(result.data);
      console.info(JSON.parse(result.data));
      console.info(JSON.parse(result.data).data.PriceSheetId);
      console.info(result.data.Data);

打印结果:第三个打印显示的形式才可以用  点属性的方式出来。 第一个打印里面有\",这样是不可以直接 点出来的。

 二、分组汇总:

复制代码
 const groupBy  = (arr, groupKey, getValue) => {
        return arr.reduce((acc, item) => {
          const key = item[groupKey];
          if (!acc[key]) {
            acc[key] = getValue(item);
          }
          return acc;
        }, {});
      };

      const groupItems = groupBy(rowDataTmp, 'DepotOutListId',item=>item.ExQty);
      sumOutQty = Object.values(groupItems).reduce((acc, value) => acc + value, 0); 
复制代码

 只能汇总一列数值

复制代码
const groupByAndSum = (array, groupBy, sumBy) => {
              return array.reduce((acc, item) => {
                const key = item[groupBy];
                if (!acc[key]) {
                  acc[key] = { [groupBy]: key, total: 0 };
                }
                acc[key].total += item[sumBy];
                return acc;
              }, {});
            };            
            console.info(result.rowsGoods);
            const groupedSum = groupByAndSum(result.rowsGoods, 'Warehouse', 'LargePackage');
View Code
复制代码

 ai生成,还未验证

复制代码
let base = {
  // 原有方法保持不变...
  
  sumColumn(data, field, type = 'sum') {
    if (!Array.isArray(data) || !field) return 0;
    if (data.length === 0) return 0;

    let values = data
      .map(item => parseFloat(item[field]))
      .filter(val => !isNaN(val));

    if (values.length === 0) return 0;

    switch (type.toLowerCase()) {
      case 'sum':
        return values.reduce((a, b) => a + b, 0);
      case 'avg':
        return values.reduce((a, b) => a + b, 0) / values.length;
      case 'max':
        return Math.max(...values);
      case 'min':
        return Math.min(...values);
      default:
        return values.reduce((a, b) => a + b, 0);
    }
  }
};

在src/uitils/common.js中添加了sumColumn方法实现列数据汇总功能。支持求和(sum)、平均值(avg)、最大值(max)、最小值(min)四种统计方式。使用方法示例:
let data = [{price:10}, {price:20}];
base.sumColumn(data, 'price') // 30
base.sumColumn(data, 'price', 'avg') // 15
View Code
复制代码

 

posted @   丁焕轩  阅读(57)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示