JS 如何将以下数组相同id或key值的value拼在一起?

JS 如何将以下数组相同id或key值的value拼在一起?

期望效果如下

spData:[

{key: '颜色', productAttributeId: '1602859781385658370', value: '黑色,白色'},

{key: '重量', productAttributeId: '1602859944225316866', value: '25KG'}

]


回答:

let arr = [

{

spData: [

{ key: '颜色', productAttributeId: '1602859781385658370', value: '黑色' },

{ key: '重量', productAttributeId: '1602859944225316866', value: '25KG' }]

},

{

spData: [

{ key: '颜色', productAttributeId: '1602859781385658370', value: '白色' },

{ key: '重量', productAttributeId: '1602859944225316866', value: '25KG' }]

}

]

let spDataArr = arr.map(({spData}) => spData)

let spData = spDataArr.splice(0, 1)[0]

spDataArr.forEach((v, i) => {

v.forEach((it, ind) => {

// 之前以为是将每个数组的第一项和第二项分别合到一起

// for (let k in it) {

// !spData[ind][k].split(',').includes(it[k]) && (spData[ind][k] = spData[ind][k] + ',' + it[k])

// }

// 看了标题才知道是将数组相同id或key值的value拼在一起,所以调整了下

((spData[ind]['key'] === it['key'] || spData[ind]['productAttributeId'] === it['productAttributeId']) && !spData[ind]['value'].split(',').includes(it['value'])) && (spData[ind]['value'] = spData[ind]['value'] + ',' + it['value'])

})

})

console.log(spData)


回答:

  var arr = [];

data.forEach((item) => {

item.spData.forEach((ele) => {

var obj = arr.find((item) => {

return item.key == ele.key;

});

if (obj) {

obj.value += "," + ele.value;

} else {

arr.push(ele);

}

});

});

以上是 JS 如何将以下数组相同id或key值的value拼在一起? 的全部内容, 来源链接: utcz.com/p/933434.html

回到顶部