猿问

javascript合并数组中相同的数据

题目描述

原数据:


var a = [["03-12", "33.87"]

 ["03-15", "34.67"]

 ["03-18", "1.13"]

 ["03-18", "1.00"]

 ["03-18", "1.00"]]

得出


 [["03-12", "33.87"]

 ["03-15", "34.67"]

 ["03-18", "3.13"]]

这个时间是不一定的. 这只是做个实例


求大神指导下


题目来源及自己的思路

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)


你期待的结果是什么?实际看到的错误信息又是什么?

问题描述

问题出现的环境背景及自己尝试过哪些方法

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)


你期待的结果是什么?实际看到的错误信息又是什么?


繁花如伊
浏览 696回答 4
4回答

心有法竹

用一个for循环遍历数组,然后把结果写入一个Map中,Map的key就是数组第一个元素,value是结果数据。具体代码不写了。

饮歌长啸

代码如下var a = [        ["03-12", "33.87"],        ["03-15", "34.67"],        ["03-18", "1.13"],        ["03-18", "1.00"],        ["03-18", "1.00"]    ]    function getArr(arr){        let obj = {}        arr.map(item=>{            if(!obj[item[0]]){                obj[item[0]] = item[1]*1            }else{                obj[item[0]] += item[1]*1            }        })        let b = []        for(var i in obj){            b.push([i,`${obj[i]}`])        }        return b    }    console.log(getArr(a))大致思路就是建一个对象,判断是否有这个属性,没有则给对象添加,有则相加。最后再变成数组。可能比较麻烦。

jeck猫

const merge = arr =>  arr.reduce((acc, cur) => {    let hasCurTime = false    acc.forEach((v, i) => {      if (v[0] === cur[0]) {        v[1] = v[1] * 1 + cur[1] * 1        hasCurTime = true      }    })    !hasCurTime && acc.push(cur)    return acc  }, [])
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答