let finalArr = []
checkListTogether.map((checkItem, index) => {
if (finalArr.length) {
const res = finalArr.some(ele => {
if (ele.classCode === checkItem.classCode) {
ele.students.push(checkItem);
}
return ele.classCode === checkItem.classCode;
});
if (!res) {
finalArr.push({
classCode: checkItem.classCode,
schoolId: checkItem.schoolId,
students: [{ ...checkItem }]
});
}
} else {
finalArr.push({
classCode: checkItem.classCode,
schoolId: checkItem.schoolId,
students: [{ ...checkItem }]
});
}
});
-------------------------------------------------------
<!--checkListTogether: [-->
<!-- {-->
<!-- classCode: checkItem.classCode,-->
<!-- schoolId: checkItem.schoolId,-->
<!-- name:'alex'-->
<!-- }-->
<!--]-->
<!--finalArr: [-->
<!-- {-->
<!-- classCode: checkItem.classCode,-->
<!-- schoolId: checkItem.schoolId,-->
<!-- students:[
<!-- {
<!-- classCode: checkItem.classCode,-->
<!-- schoolId: checkItem.schoolId,-->
<!-- name:'alex'-->
<!-- }
<!-- ]-->
<!-- }-->
<!--]-->
複製代碼
請看以上代碼,業務需求是有一個一維數組checkListTogether相似上方的註釋。如今要根據每一項的classCode來作數據的歸類,最後由finalArr接收,形式就是把classCode提出來,相同classCode的對象在放到students,變成二位數組。數組
由於要提取checkListTogether中的項,因此遍歷checkListTogether。在每一次遍歷中又some遍歷finalArr,其中幹了兩件事。第一,若是匹配到了classCode,就Push到二維數組中。第二,返回是否匹配到的bollen,若是false表示當前一維數組的項在finalArr中沒有匹配到,就在finalAarr新加一個屬於這個classcode的項。spa
另外,初始finalArr沒有項,是不能遍歷的,因此判斷第一次要push進去一個值。code