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) // 你要的结果