js 计算对象数组中某个属性值重复出现的个数
生活随笔
收集整理的這篇文章主要介紹了
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相同的元素重復次數1. 首先要先獲取所有需要計算的屬性值
//先根據所有的title組合成一個數組 let titleList = list.map(item => {return item.name })//獲得["1000積分", "500積分", "50積分", "50積分", "50積分"]2. 有兩種方法將上面返回的結果變成:{1000積分: 1, 500積分: 1, 50積分: 3}
(1)常規的方法:使用 for 循環 ;
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; }(2)使用 reduce(),接收一個函數作為累加器,數組中的每個值(從左到右)開始縮減,最終計算為一個值。支持IE9+
//用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}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}] 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的js 计算对象数组中某个属性值重复出现的个数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue 简单实用的elementUI表格
- 下一篇: 小程序 报错errMsg: “hideL