let arr = [ { id: 1, list: { id: 66 } }, { id: 1, list: { id: 44 } }, { id: 2, list: { id: 55 } }, { id: 2, list: { id: 33 } }, { id: 3, list: { id: 11 } }, { id: 3, list: { id: 22 } } ] let tempArr = [], newArr = [] for (let i = 0; i < arr.length; i++) { if (tempArr.indexOf(arr[i].id) === -1) { newArr.push({ id: arr[i].id, list: [arr[i].list] }) tempArr.push(arr[i].id); } else { for (let j = 0; j < newArr.length; j++) { if (newArr[j].id == arr[i].id) { newArr[j].list.push(arr[i].list) } } } } console.log(newArr)