Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Giảm mảng đồng thời gộp trường dữ liệu JavaScript

Cho mảng đối tượng:

const arr = [{ id: 121, hobby: 'cycling' }, { id: 125, hobby: 'jogging' }, { id: 129, hobby: 'reading' }, { id: 121, hobby: 'writing' }, { id: 121, hobby: 'playing football' }, { id: 125, hobby: 'cooking' }, { id: 129, hobby: 'horse riding' }];

Gộp theo id chung, hobby thành mảng chứa tất cả sở thích của id đó.

Dùng reduce() duyệt và gộp cùng lúc.

Ví dụ

const arr = [{ id: 121, hobby: 'cycling' }, { id: 125, hobby: 'jogging' }, { id: 129, hobby: 'reading' }, { id: 121, hobby: 'writing' }, { id: 121, hobby: 'playing football' }, { id: 125, hobby: 'cooking' }, { id: 129, hobby: 'horse riding' }]; const mergeArray = (arr) => {    return arr.reduce((acc, val) => {       const ind = acc.findIndex(item => item.id === val.id);       if(ind !== -1){          acc[ind].hobby.push(val.hobby);       }else{          acc.push({ id: val.id, hobby: [val.hobby] });       }    return acc; }, []); }; console.log(mergeArray(arr));

Kết quả

Đầu ra console:

[ { id: 121, hobby: [ 'cycling', 'writing', 'playing football' ] }, { id: 125, hobby: [ 'jogging', 'cooking' ] }, { id: 129, hobby: [ 'reading', 'horse riding' ] } ]