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)

是这样吗

image.png
我是要把下面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

回到顶部