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

简介: js处理json数据(合并键值对相同的数据,指定键值对相加或拼接)、前端实现

方法:

// 将相同name的进行分组
          for (let i = 0; i < newArr1.length; i++) {//newArr1为原始json数据
            // 利用some函数来区分是否相同
            if (
              !obj.some(item => item.name === newArr1[i].name &&
                item.width === newArr1[i].width &&
                item.height === newArr1[i].height &&
                item.widthDeviation === newArr1[i].widthDeviation &&
                item.heightDeviation === newArr1[i].heightDeviation &&
                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
          })
        })

来看对比图:
合并前:
在这里插入图片描述
合并后:
在这里插入图片描述
需要的可直接贴代码。

相关文章
|
存储 前端开发 安全
前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
本文全面解析前端三种数据存储方式:Cookie、LocalStorage与SessionStorage。涵盖其定义、使用方法、生命周期、优缺点及典型应用场景,帮助开发者根据登录状态、用户偏好、会话控制等需求,选择合适的存储方案,提升Web应用的性能与安全性。(238字)
874 0
|
存储 监控 安全
前端框架的数据驱动方式如何保证数据的安全性?
总之,前端框架的数据驱动方式需要综合运用多种手段来保证数据的安全性。从传输、存储、访问控制到防范攻击等各个方面进行全面考虑和实施,以确保用户数据的安全可靠。同时,不断加强安全管理和技术创新,以应对不断变化的安全挑战。
512 60
|
10月前
|
Web App开发 数据采集 JavaScript
动态网页爬取:Python如何获取JS加载的数据?
动态网页爬取:Python如何获取JS加载的数据?
1503 58
|
12月前
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
845 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
12月前
|
数据采集 JavaScript 前端开发
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
用array.filter()来实现数据筛选、数据清洗和链式调用,相对于for循环更加清晰,语义化强,能显著提升代码的可读性和可维护性。博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
监控 JavaScript 算法
深度剖析 Vue.js 响应式原理:从数据劫持到视图更新的全流程详解
本文深入解析Vue.js的响应式机制,从数据劫持到视图更新的全过程,详细讲解了其实现原理和运作流程。
|
数据采集 存储 JavaScript
如何使用Puppeteer和Node.js爬取大学招生数据:入门指南
本文介绍了如何使用Puppeteer和Node.js爬取大学招生数据,并通过代理IP提升爬取的稳定性和效率。Puppeteer作为一个强大的Node.js库,能够模拟真实浏览器访问,支持JavaScript渲染,适合复杂的爬取任务。文章详细讲解了安装Puppeteer、配置代理IP、实现爬虫代码的步骤,并提供了代码示例。此外,还给出了注意事项和优化建议,帮助读者高效地抓取和分析招生数据。
560 0
如何使用Puppeteer和Node.js爬取大学招生数据:入门指南
|
存储 JSON JavaScript
JavaScript JSON
【10月更文挑战第7天】JSON 是 JavaScript 中非常重要的一个数据格式,它为数据的表示和传输提供了一种简单而有效的方式。掌握 JSON 的使用方法和特点,对于开发高质量的 JavaScript 应用具有重要意义。
|
监控 JavaScript 前端开发
前端的混合之路Meteor篇(六):发布订阅示例代码及如何将Meteor的响应数据映射到vue3的reactive系统
本文介绍了 Meteor 3.0 中的发布-订阅模型,详细讲解了如何在服务器端通过 `Meteor.publish` 发布数据,包括简单发布和自定义发布。客户端则通过 `Meteor.subscribe` 订阅数据,并使用 MiniMongo 实现实时数据同步。此外,还展示了如何在 Vue 3 中将 MiniMongo 的 `cursor` 转化为响应式数组,实现数据的自动更新。
293 2