您的位置:首页 > Web前端 > JavaScript

JS实现求数组重复第N多元素——数组实现

2017-04-06 18:22 155 查看
实现一个函数,函数传入参数是数组和N,返回值是数组重复第N多的元素和重复次数:

初期思路:对传入的数组进行排序,将数组中的不重复的元素存入一个新数组,并将每个元素出现次数对应存入另外一个数组。根据出现次数对以上两个数组进行由大到小的排序,将元素出现次数按照大小顺序存入新数组,查找重复第N多元素,首先查找出现次数,出现次数为数组中下标为N-1的元素。最后用for循环判断输出所有符合出现次数的元素。

代码如下:

function maxN(arr,n){
arr.sort(function(a,b){
return a-b;
});
var arr_num=new Array();
var arr_time=new Array();
var num=arr[0];
arr_num[0]=arr[0];
arr_time[0]=1;
var k=0;
var change_num;
var change_time;
for(let i=1;i<arr.length;i++){
if(arr[i]!=num){
k++;
num=arr[i];
arr_num[k]=arr[i];
arr_time[k]=1;
}
else{
arr_time[k]=arr_time[k]+1;
}
}
for(let i=0;i<arr_time.length;i++){
for(let j=i+1;j<arr_time.length;j++){
if(arr_time[i]<arr_time[j]){
change_time=arr_time[i];
arr_time[i]=arr_time[j];
arr_time[j]=change_time;
change_num=arr_num[i];
arr_num[i]=arr_num[j];
arr_num[j]=change_num;
}
}
}
var arr_N1=new Array();
arr_N1=arr_time.sort(function(a,b){
return b-a;
});
var arr_N=new Array();
arr_N[0]=arr_N1[0];
k=0;
for(let i=0;i<arr_N1.length;i++){
if(arr_N[k]!=arr_N1[i]){
k++;
arr_N[k]=arr_N1[i];
}
}
for(let i=0;i<arr_time.length;i++){
if(arr_time[i]==arr_N[n-1]){
console.log(arr_num[i],arr_time[i]);
}
}
}


这种方法比较复杂,后续会继续优化。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: