现在:
data=[{label:'a',value:'1'},{label:'a',value:'2'},{label:'b',value:'1'},{label:'c',value:'1'},{label:'d',value:'1'},{label:'a',value:'3'},{label:'b',value:'2'},{label:'c',value:'2'},]
希望:
data=[{label:'a',value1:'1',value2:'2',value3:'3'},{label:'b',value1:'1',value2:'2'},{label:'c',value1:'1',value2:'2'},{label:'d',value1:'1',value2:'2'}]
const data = [{label:'a',value:'1'},{label:'a',value:'2'},{label:'b',value:'1'},{label:'c',value:'1'},{label:'d',value:'1'},{label:'a',value:'3'},{label:'b',value:'2'},{label:'c',value:'2'},]
const newData = data.reduce((newArr, item) => {
const sameLabelItem = newArr.filter(_item => _item.label === item.label)[0] // 现在 newArr 中找有没有相同 label 的对象
if (sameLabelItem) { // 如果有相同 label 的对象,直接在这个相同label对象的 value 中 push item 的 value
sameLabelItem.value.push(item.value)
} else { // 如果没有,newArr 直接 push item
newArr.push({ label: item.label, value: [item.value] })
}
return newArr // 返回 newArr
}, [])
console.log(newData) // 你要的结果