{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}]
                    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} ]
				
文章转载自https://blog.csdn.net/lixiaoyan93/article/details/88719333 1、计算特定重复个数 let counts = (arr, value) => arr.reduce((a, v) => v === value ? a + 1 : a + 0, 0); console.log('数组counts"李"出现的次数是:...
一、有时候的根据需求计算数组某个元素重复出现个数 var arr = ["apple","orange","apple","orange","pear","orange"]; 计算出来重复出现的元素个数:{apple: 2, orange: 3, pear: 1} 二、代码实现 //统计一个数有多少个不重复的单词: // 不用reduce时: var arr = ["apple","orange","apple","orange","pear","orange"]
<meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Docum. const obj = {} for (let i = 0, len = arrData.length; i < len; i++) { if (!obj[arrData[i].equal]) { obj[arrData[i].equal] = 1 } else { obj[arrData[i].equal]++ 在开发,我们经常需要获取对象数组每一项重复项的个数,并按照出现次数排序。这在处理数据时非常有用,可以让我们快速分析和可视化数据。本篇博客将介绍如何使用JavaScript实现这个功能。 遍历数组并统计次数 首先,我们需要遍历目标对象数组,并统计每个对象出现的次数。我们可以使用forEach()或for...of循环实现,对于每个对象,以其特定属性作为键,在一个空对象查找相应的...