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的重复次数

//先根据所有的serialNumber组合成一个数组
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:计算数组元素相加后的总和
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}]

原文地址:https://www.cnblogs.com/yixiancheng/p/12048144.html

时间: 2024-10-07 17:50:57

js计算数组中某个元素重复出现的个数的相关文章

reduce实现计算数组中每个元素出现的次数 数组去重 将多维数组转化为一维

// js计算数组中每个元素出现的次数 // var names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice']; // var countedNames = names.reduce(function (allNames, name) { // if (name in allNames) { // allNames[name]++; // } // else { // allNames[name] = 1; // } // return allName

js删除数组中的元素

js删除数组中的元素delete和splice的区别 例如有一个数组是 :var textArr = ['a','b','c','d']; 这时我想删除这个数组中的b元素: 方法一:delete 删除数组 delete textArr[1] 结果为: ["a",undefined,"c","d"] 只是被删除的元素变成了 undefined 其他的元素的键值还是不变. 方法二:aplice 删除数组 splice(index,len,[item]

JS判断数组中是否有重复元素的方法

判断数组中是否有重复元素,最容易想到的方法是使用2重循环,逐个遍历,比较,但是这个是最慢,最笨的方法,百度得出了更好的方法. var ary = new Array("111","22","33","111"); var nary=ary.sort(); for(var i=0;i<ary.length;i++){ if (nary[i]==nary[i+1]){ alert("数组重复内容:"+na

JS 验证数组中是否包含重复元素

验证JS中是否包含重复元素,有重复返回true:否则返回false function isRepeat(data) { var hash = {}; for (var i in data) { if (hash[data[i]]) { return true; } // 不存在该元素,则赋值为true,可以赋任意值,相应的修改if判断条件即可 hash[data[i]] = true; } return false; }

常用技巧之JS判断数组中某元素出现次数

先上代码:function arrCheck(arr){  var newArr = [];  for(var i=0;i<arr.length;i++){    var temp=arr[i];    var count=0;    for(var j=0;j<arr.length;j++){      if(arr[j]==temp){        count++;        arr[j]=-1;      }    }    if(temp != -1){      newArr.

js获取数组中相同元素数量

<script> var array = new Array(1,2,5,1,4,4,2,3,5,1,1,5,5,5,6,7,3,9,9,10); var arr = new Array(); var test = new Array(); var num = 1; var temp = ""; var size = array.length; for(var i=0;i<size; i++){ for(var j=i+1;j<size; j++){ if(ar

js判断数组中是否有重复元素

方法一:indexOf 方法 function isRepeat() { var ary = new Array("111", "22","22", "33", "111"); for (var i = 0; i < ary.length; i++) { console.log(ary.indexOf(ary[i])); if(ary.indexOf(ary[i]) != i) { alert(&qu

js判断数组中是否有重复值得三种方法

方法一: var s = ary.join(",")+","; for(var i=0;i<ary.length;i++) { if(s.replace(ary[i]+",","").indexOf(ary[i]+",")>-1) { alert("数组中有重复元素:" + ary[i]); break; } } 方法二: var ary = new Array("

js 判断数组中是否存在重复值

// 检测是否有重复值            function isRepeat(arr) { var isRepeat = false;                var hash = {}; for(var i in arr) { if (hash[arr[i]]) { isRepeat = arr[i];                        return isRepeat;                    } hash[arr[i]] = true;