一个不确定内容的数组,统计每个元素出现的次数的方法
第一种方法使用reduce方法,通过传入的内容来确定
var arrs=['a','a','d','c','f','d','我','我','他',2,2,5,4,6,8]; function a(){ return arrs.reduce( function(prev:any,next:any){ console.log(prev); console.log(next); prev[next]=(prev[next]+1) || 1; return prev; },{}) } console.log(a());
第二种 双重循环对比法
实现理论:定义一个空数组,第一个循环循环数组,然后创建一个变量存放当前值,然后再创建一个变量存放出现次数,第二个循环跟第一个循环的数据进行对比,如果存在次数变量就加1,对比过的让他的值变成-1,最后当前值不不等于-1.存入新的数组
var arr=['a','a','d','c','f','d','我','我','他',2,2,5,4,6,8];
function arrCheck(arr:any){ 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.push(temp+","+count) } } return newArr; } arrCheck(arrs);
第三种,最简单
实现理论: 定义一个空对象,循环这个数组,判断如果对象里面有这个属性就给这个值加1(使用hasOwnProperty),没有呢就把这个属性添加到这个对象中,设置初始值为1
var arr=['a','a','d','c','f','d','我','我','他',2,2,5,4,6,8]; var obj={}; for(let i=0;i<arr.length;i++){ if(obj.hasOwnProperty(arr[i])){ obj[arr[i]] +=1; }else{ obj[arr[i]] =1; } } console.log(obj);
赞 (0)