js对象数组合并,把key相同的合并到上一个对象中去
原始数据:
[{
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
的类型先合并,然后再合并到上一个对象中去,麻烦各位大侠鼎力相助!在线等
回答
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);
}
})
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)
是这样吗
我是要把下面tagType=2的所有值都插入到 index = 3里面去
[{ 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
以上是 js对象数组合并,把key相同的合并到上一个对象中去 的全部内容, 来源链接: utcz.com/a/37173.html