js計算數組中某個元素重復出現的個數(一)


let list = [
  {name:"1000積分",serialNumber:6},   {name:"500積分",serialNumber:7},   {name:"50積分",serialNumber:8},   {name:"50積分",serialNumber:8},   {name:"50積分",serialNumber:8} ];

怎么把list數組轉化為

[
  {title:"1000積分",num:1},
  {title:"500積分",num:1},
  {title:"50積分",num:3}
]
//num:serialNumber相同的元素重復次數

首先要先獲取同樣的serialNumber的重復次數

//先根據所有的title組合成一個數組
let titleList = list.map(item => {
return item.name
})

//獲得["1000積分", "500積分", "50積分", "50積分", "50積分"]


然后有兩種方法將titleList 轉化
 // 不用reduce時:
function getRepeatNum(){ 
        var obj = {}; for(var i= 0, l = titleList.length; i< l; i++){ var item = arr[i]; obj[item] = (obj[item] +1 ) || 1; } return obj; } //用reduce時: //reduce:計算數組元素相加后的總和
//reduce方法接受兩個參數,第一個是函數,第二個是初始值 function getRepeatNum(){ return titleList.reduce(function(prev,next){ prev[next] = (prev[next] + 1) || 1; return prev; },{}); } console.log(getRepeatNum());//獲得{1000積分: 1, 500積分: 1, 50積分: 3}

let myObj = this.getRepeatNum2(titleList),
winningList = []
for(let i in myObj){
let obj = {
title:i,
num:myObj[i]
}
winningList.push(obj)
}
console.log(winningList)
//[{"title":"1000積分","num":1},{"title":"500積分","num":1},{"title":"50積分","num":3}]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM