[ {UID:"222",value:"111"}, {UID:"222",value:"103"}, {UID:"123",value:"302"}, {UID:"123",value:"031"} ] 改成[ {UID:"222",value:"111,103"}, {UID:"123",value:"302,031"} ] function handle(arr) { var res = [], obj = {}, index = 0; arr.forEach(val => { if (obj.hasOwnProperty(val.UID)) { res[obj[val.UID]].value = res[obj[val.UID]].value + ',' + val.value; } else { obj[val.UID] = index++; res.push({ UID: val.UID, value: val.value }); } }); return res; } var arr = [{ UID: "222", value: "111" }, { UID: "222", value: "103" }, { UID: "123", value: "302" }, { UID: "123", value: "031" }] console.log(handle(arr))
思路:
1.創建一個新的數組存放結果
2.創建一個空對象
3.for循環時,每次取出一個元素與對象進行對比,如果這個元素不重復,則把它存放到結果數組中,同時把這個元素的內容作為對象的一個屬性,並賦值為1,存入到第2步建立的對象中。
說明:至於如何對比,就是每次從原數組中取出一個元素,然后到對象中去訪問這個屬性,如果能訪問到值,則說明重復。
本文 轉載自 segmengDefault 和 腳本之家