美文网首页
处理数组对象,相同日期的数据加和

处理数组对象,相同日期的数据加和

作者: 家有饿犬和聋猫 | 来源:发表于2019-07-29 16:43 被阅读0次

思路:
1遍历这个数组 然后把每个对象里面的年月日拼起来 拼成一个新的key 然后返回一个新的数组 就类似与['onlyKey': '201943', datas: {year:2019,month:4,day:3,ms:0,last:1,rateChange:-3.14}],

2然后再遍历这个新数组 ,将数据写入对象里,方法是 'onlyKey'作为对象名, 对象名已存在(代表日期已存在),数据就加和,不存在,就加入对象。

3再将对象转化为数组

let  arr = [
    {year:2019,month:4,day:16,ms:6.33,last:0,rateChange:0},
    {year:2019,month:4,day:17,ms:2.44,last:0,rateChange:0},
    {year:2019,month:4,day:18,ms:7.41,last:0,rateChange:0},
    {year:2019,month:4,day:3,ms:-7.41,last:0,rateChange:3},
    {year:2019,month:4,day:5,ms:0,last:7.6,rateChange:0},
    {year:2019,month:4,day:5,ms:8.3,last:0,rateChange:0},
    {year:2019,month:4,day:3,ms:0,last:1,rateChange:-3.14},
    ]


    let addData=(arr)=>{


        let filterarr=[]
        arr.map(
            p=>{
                filterarr.push({'onlyKey':p.year.toString()+p.month.toString()+p.day.toString(),'datas':p})
               
            }
        )
        
            console.log("filterarr",filterarr)
        let newObj={}
        
        
            filterarr.map(
                  (p,index)=>{
                 
                  if(newObj[p.onlyKey]!==undefined){
                     
                   let o= newObj[p.onlyKey].datas
                   let d=p.datas
                   d.ms? o.ms=Number(o.ms)+ Number(d.ms)  : o.ms
                   d.last? o.last=Number(o.last)+ Number(d.last)  : o.last
                   d.rateChange? o.rateChange=Number(o.rateChange)+ Number(d.rateChange)  : o.rateChange
        
                   newObj[p.onlyKey].datas = o
        
                  }else{
                    newObj[`${p.onlyKey}`]=p
                  }
                      
                }
            )
        
            let newArr=[]
            for(let p in newObj){
                newArr.push(
                    newObj[p]
                )
            }
            return  newArr

            console.log("最后newArr",newArr)

    }

    addData(arr);

打印结果

image.png

相关文章

  • 处理数组对象,相同日期的数据加和

    思路:1遍历这个数组 然后把每个对象里面的年月日拼起来 拼成一个新的key 然后返回一个新的数组 就类似与['on...

  • map()处理数组和对象数据

    一、原生map()定义:数组的方法。作用:创建一个新数组,结果是该数组中的每个元素为,调用一个特定的函数后返回的结...

  • 详解JS中常见的5 种 for 循环

    for 循环在平时开发中使用频率最高的,前后端数据交互时,常见的数据类型就是数组和对象,处理对象和数组时经常使用到...

  • HashMap Hashtable HashSet

    HashMap HashMap主要结构 数组加链表 数组加红黑树 存放数据的对象 Node <- Map.Entr...

  • Java数组总结

    数组是具有相同类型的一种数据的集合,按照维度可分为一维数组、二维数组和多维数组 数据类型 数组是引用类型(即是对象...

  • Python学习笔记(5):NumPy库入门1

    1. 列表与数组 列表:数据类型可以不同;数组:数据类型相同 2. ndarray: NumPy的数组对象 Num...

  • 数组及快捷键

    数组 : 1、数组(一种引用数据类型) 数组中的所有元素具有相同数据类型,长度确定(数组对象长度不可变,而不是数组...

  • R语言实战考卷 第四章

    本章要点 R储存缺失值和日期的方式; 处理缺失值和日期的方式 对象的数据类型;转换数据类型;(控制流if-then...

  • js数组与对象常用操作方法

    一、Js相关数组操作 数组去除相同的 数组添加数数据 数组反转 打乱数组排序 取数组的前几个 数组扁平化 遍历对象...

  • thymeleaf表达式

    日期格式、组件提取等. 日历 格式化数字对象 字符串处理 对象处理 布尔值相关 数组相关 list集合相关 set...

网友评论

      本文标题:处理数组对象,相同日期的数据加和

      本文链接:https://www.haomeiwen.com/subject/acabrctx.html