js对象数组合并,把key相同的合并到上一个对象中去

发布于 2022-09-12 04:00:51 字数 671 浏览 8 评论 0

原始数据:

[
    {
        type: 1,
        value: 1
    },
    {
        type: 1,
        value: 2
    },
    {
        type: 2,
        value: 3
    },
    {
        type: 2,
        value: 4
    },
    {
        type: 1,
        value: 5
    },
    {
        type: 1,
        value: 6
    },
    {
        type: 2,
        value: 7
    }
]

想要得到的结果:

[
    {
        type: 1,
        value: 1
    },
    {
        type: 1,
        value: '2,3,4'
    },
    {
        type: 1,
        value: 5
    },
    {
        type: 1,
        value: '6,7'
    }
]

相当于把type=2的类型先合并,然后再合并到上一个对象中去,麻烦各位大侠鼎力相助!在线等

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

一抹微笑 2022-09-19 04:00:51
let arr = [
    {
        type: 1,
        value: 1
    },
    {
        type: 1,
        value: 2
    },
    {
        type: 2,
        value: 3
    },
    {
        type: 2,
        value: 4
    },
    {
        type: 1,
        value: 5
    },
    {
        type: 1,
        value: 6
    },
    {
        type: 2,
        value: 7
    }
];
let newArr = []
arr.map((item,index)=>{
    if(item.type==2){
        newArr[newArr.length-1].value += ','+item.value;//这里需要加个判断判断前一个如果没有type=1的数据时怎么办,但是不知道你没有时要如何展示,故没有加判断
    }else{
        newArr.push(item);
    }
})
苦妄 2022-09-19 04:00:51
let arr = [
            {
                type: 1,
                value: 1
            },
            {
                type: 1,
                value: 2
            },
            {
                type: 2,
                value: 3
            },
            {
                type: 2,
                value: 4
            },
            {
                type: 1,
                value: 5
            },
            {
                type: 1,
                value: 6
            },
            {
                type: 2,
                value: 7
            }
        ];
        
        let resultArr = [];
        let resultObj = {};
        arr.forEach((obj)=>{
            console.log(obj.type,resultObj[obj.type])
            if(!resultObj[obj.type]){
                resultObj[obj.type] = [obj.value]
                console.log(resultObj)
            }else{
                resultObj[obj.type].push(obj.value)
            }
        })
        
        for(let key in resultObj){
            let newObj = {
                type:key,
                value:resultObj[key].join(',')
            }
            resultArr.push(newObj)
        }
        console.log(resultArr)

是这样吗

伏妖词 2022-09-19 04:00:51

image.png
我是要把下面tagType=2的所有值都插入到 index = 3里面去

数理化全能战士 2022-09-19 04:00:51
[{
  type: 1,
  value: 1
},
{
  type: 1,
  value: 2
},
{
  type: 2,
  value: 3
},
{
  type: 2,
  value: 4
},
{
  type: 1,
  value: 5
},
{
  type: 1,
  value: 6
},
{
  type: 2,
  value: 7
}].reduce((c, n) => {
  const idx = c.t.indexOf(n.type);
  if (idx > -1) {
    c.v[idx].value = c.v[idx].value + ',' + n.value;
  } else {
    c.v.push(n);
    c.t.push(n.type)
  }
  return c
}, { v: [], t: [] }).v
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文