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
          })
        })

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

相关文章
|
16天前
|
JSON JavaScript 前端开发
JavaScript原生代码处理JSON的一些高频次方法合集
JavaScript原生代码处理JSON的一些高频次方法合集
|
18天前
|
前端开发 JavaScript 网络协议
前端最常见的JS面试题大全
【4月更文挑战第3天】前端最常见的JS面试题大全
40 5
|
1月前
|
JavaScript 前端开发 Java
纯前端JS实现人脸识别眨眨眼张张嘴案例
纯前端JS实现人脸识别眨眨眼张张嘴案例
48 0
|
1月前
|
JSON JavaScript 前端开发
解决js中Long类型数据在请求与响应过程精度丢失问题(springboot项目中)
解决js中Long类型数据在请求与响应过程精度丢失问题(springboot项目中)
38 0
|
1月前
|
JavaScript 前端开发
JavaScript随手笔记 --- 对数据进行判断最大位数是否超过八位
JavaScript随手笔记 --- 对数据进行判断最大位数是否超过八位
|
1月前
|
存储 JSON Apache
揭秘 Variant 数据类型:灵活应对半结构化数据,JSON查询提速超 8 倍,存储空间节省 65%
在最新发布的阿里云数据库 SelectDB 的内核 Apache Doris 2.1 新版本中,我们引入了全新的数据类型 Variant,对半结构化数据分析能力进行了全面增强。无需提前在表结构中定义具体的列,彻底改变了 Doris 过去基于 String、JSONB 等行存类型的存储和查询方式。
揭秘 Variant 数据类型:灵活应对半结构化数据,JSON查询提速超 8 倍,存储空间节省 65%
|
11天前
|
存储 JSON JavaScript
「Python系列」Python JSON数据解析
在Python中解析JSON数据通常使用`json`模块。`json`模块提供了将JSON格式的数据转换为Python对象(如列表、字典等)以及将Python对象转换为JSON格式的数据的方法。
28 0
|
15天前
|
存储 JSON 数据挖掘
python逐行读取txt文本中的json数据,并进行处理
Python代码示例演示了如何读取txt文件中的JSON数据并处理。首先,逐行打开文件,然后使用`json.loads()`解析每一行。接着,处理JSON数据,如打印特定字段`name`。异常处理包括捕获`JSONDecodeError`和`KeyError`,确保数据有效性和字段完整性。将`data.txt`替换为实际文件路径运行示例。
12 2
|
15天前
|
JavaScript 前端开发
EasyUi js 加载数据表格DataGrid
EasyUi js 加载数据表格DataGrid
|
21天前
|
人工智能 前端开发 JavaScript
【前端设计】HTML+CSS+JavaScript基本特性
【前端设计】HTML+CSS+JavaScript基本特性