js处理json数据(合并键值对相同的数据,指定键值对相加或拼接)、前端实现_js json数组根据相同的项让另一项相加

25 阅读1分钟
            item.tempered === newArr1[i].tempered &&
            item.floorNum === newArr1[i].floorNum &&
            item.processRequirements === newArr1[i].processRequirements &&
            item.remark === newArr1[i].remark
          )) {
          obj.push(newArr1[i])

          arr.push({
            gname: newArr1[i].name,
            gwidth: newArr1[i].width,
            gheight: newArr1[i].height,
            gwidthDeviation: newArr1[i].widthDeviation,
            gheightDeviation: newArr1[i].heightDeviation,
            gtempered: newArr1[i].tempered,
            gfloorNum: newArr1[i].floorNum,
            gprocessRequirements: newArr1[i].processRequirements,
            gremark: newArr1[i].remark,
            data: [newArr1[i]]
          })
        } else {
          // 把那些和键值相同的条目放入分组(玻璃名)
          for (let k = 0; k < arr.length; k++) {
            if (arr[k].gname === newArr1[i].name &&
              arr[k].gwidth === newArr1[i].width &&
              arr[k].gheight === newArr1[i].height &&
              arr[k].gwidthDeviation === newArr1[i].widthDeviation &&
              arr[k].gheightDeviation === newArr1[i].heightDeviation &&
              arr[k].gtempered === newArr1[i].tempered &&
              arr[k].gfloorNum === newArr1[i].floorNum &&
              arr[k].gprocessRequirements === newArr1[i].processRequirements &&
              arr[k].gremark === newArr1[i].remark
            ) {
              arr[k].data.push(newArr1[i])
            }
          }
        }
      }


const arr2 = [] var newArr1s = [] // 循环分组数据即可,然后针对特定项目做处理 // 注意点在于三元表达式,因为数组必须有两个才能用reduce函数(缩减函数) arr.forEach(item => { console.log(j88888---, item) arr2.push({ // name: item.data.map(item => item.name).join(','), name: item.gname, width: item.gwidth, height: item.gheight, widthDeviation: item.gwidthDeviation, heightDeviation: item.gheightDeviation, number: item.data.length > 1 ? item.data.map(item => item.number).reduce((pre, next) => pre + next) : item.data[0].number,//此处为相加方法 price: item.data[0].price, tempered: item.gtempered, floorNum: item.gfloorNum ? item.gfloorNum : item.data.map(item => item.floorNum).join(','), processRequirements: item.gprocessRequirements ? item.gprocessRequirements : item.data.map(item => item.processRequirements).join(','),//此处为字符串拼接方法 remark: item.gremark ? item.gremark : item.data.map(item => item.remark).join(',') // tempered: this.sss, // name: item.data[0].name }) })


来看对比图:  
 合并前:  


###  最后

其实前端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。



这里再分享一个复习的路线:(以下体系的复习资料是我从各路大佬收集整理好的)

《前端开发四大模块核心知识笔记》  

![](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/696a2a60b2524d228b878bb3df73e189~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771407042&x-signature=vDziwKarBx%2BgLmRr7JFpwVC49kA%3D)



最后,说个题外话,我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。



我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在IT学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。
**开源分享:https://docs.qq.com/doc/DSmRnRGxvUkxTREhO**