多个数组求和


  export interface ISum {
  subscript: number;
  num: number[];
  sumOfNum?: number;
}



/**
   * 变换形式
   * * eg:
   * 如下数组:
   * ```
   * [
   * {data:[11, null, null]},
   * {data:[null, 2, 8]}
   * ]
   * ```
   * 变成:
   *
   * ```
   * [
   * {subscript: 0, num: [11, 0],},
   * {subscript: 1, num: [0, 2]},
   * {subscript: 2, num: [0, 8]},
   * ]
   *
   * ```
   */
  private integrateSum(list) {
    const newArr: ISum[] = [];
    list.forEach((e) => {
      if (e.data.length !== 0) {
        e.data.forEach((j, k) => {
          const num = j === null ? 0 : (j as number);

          // new item include subscript and totalReject
          const values: ISum = {
            subscript: k,
            num: [num],
          };
          const sameSubscript = newArr.findIndex((c) => c.subscript === k);
          if (sameSubscript !== -1) {
            newArr[sameSubscript].num.push(num);
          } else {
            newArr.push(values);
          }
        });
      }
    });
    return newArr;
  }

  /** 算和
   * ```
   * [
   * {subscript: 0, num: [11, 0],},
   * {subscript: 1, num: [0, 2]},
   * {subscript: 2, num: [0, 8]},
   * ]
   * ```
   * 变成
   * ```
   * [
   * {subscript: 0, num: [11, 0], sumOfNum: 11},
   * {subscript: 1, num: [0, 2], sumOfNum: 2},
   * {subscript: 2, num: [0, 8], sumOfNum: 8},
   * ]
   * ```
   */
  private sumNum(newArr: ISum[]): ISum[] {
    return newArr.map((e) => {
      const sum = e.num.reduce((total, num) => total + num);
      return {...e, sumOfNum: sum};
    });
  }



/**
*先调用第一个方法, 然后调用第二个方法,你就可以得到一个数组,然后处理一下即可
*/

private getSum() {
    const sum: string[] = [];
    this.sumNum(this.integrateSum(list)).forEach((e) => {
      sum.push(e.sumOfNum);
    });
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值