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