一个对象数组,现在需要获取数组中键重复的元素,只要一组代表性的键,对于值的处理希望能够按照原来对应键来摆放,?-灵析社区

正确计算方式

现在: 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'}]

阅读量:254

点赞量:8

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