为了账号安全,请及时绑定邮箱和手机立即绑定

javascript合并数组中相同的数据

javascript合并数组中相同的数据

繁花如伊 2019-03-22 22:19:02
题目描述原数据: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"]]这个时间是不一定的. 这只是做个实例求大神指导下题目来源及自己的思路相关代码// 请把代码文本粘贴到下方(请勿用图片代替代码)你期待的结果是什么?实际看到的错误信息又是什么?问题描述问题出现的环境背景及自己尝试过哪些方法相关代码// 请把代码文本粘贴到下方(请勿用图片代替代码)你期待的结果是什么?实际看到的错误信息又是什么?
查看完整描述

4 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

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


查看完整回答
反对 回复 2019-04-14
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

代码如下

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

大致思路就是建一个对象,判断是否有这个属性,没有则给对象添加,有则相加。最后再变成数组。可能比较麻烦。


查看完整回答
反对 回复 2019-04-14
?
jeck猫

TA贡献1909条经验 获得超7个赞

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

  }, [])


查看完整回答
反对 回复 2019-04-14
  • 4 回答
  • 0 关注
  • 695 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信