js计算数组里的对象的某个值相同,其余值相加

 let arry = [
        { Code: "x", Num: 1, TagName: "nihao" },
        { Code: "x", Num: 2, TagName: "nihao" },
        { Code: "y", Num: 3, TagName: "spec" },
        { Code: "y", Num: 4, TagName: "spec1" },
        { Code: "y", Num: 2, TagName: "其他" },
        { Code: "y", Num: 2, TagName: "其他" },
      ];
  function mergeArr(arr) {
    let newArr = [];
    arr?.forEach(item => {
      const dataItem = item;
      if (newArr.length > 0) {
        const filterValue = newArr.filter(v => {
          return v.TagName === dataItem.TagName;
        });
        if (filterValue.length > 0) {
          newArr = newArr.map(n => {
            if (n.TagName === filterValue[0].TagName) {
              // n.Num = filterValue[0].Num + dataItem.Num; 奇怪的很,不能赋值,用解构赋值
              return { ...n, Num: filterValue[0].Num + dataItem.Num };
            }
            return n;
          });
        } else {
          newArr.push(dataItem);
        }
      } else {
        newArr.push(dataItem);
      }
    });
    return newArr;
  }

console.log(mergeArr(arry))
// let arry = [
        { Code: "x", Num: 3, TagName: "nihao" },
        { Code: "y", Num: 3, TagName: "spec" },
        { Code: "y", Num: 4, TagName: "spec1" },
        { Code: "y", Num: 4, TagName: "其他" },
      ];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容