Maison  >  Article  >  interface Web  >  Explication détaillée de la méthode JS pour obtenir les éléments les plus fréquents dans un tableau

Explication détaillée de la méthode JS pour obtenir les éléments les plus fréquents dans un tableau

小云云
小云云original
2018-01-20 10:15:365251parcourir

Cet article présente principalement la méthode JS pour obtenir les éléments les plus fréquents et les deuxièmes éléments les plus fréquents dans un tableau, impliquant le parcours, le tri, le jugement, l'interrogation et d'autres compétences opérationnelles connexes de JavaScript pour les tableaux. Les amis qui en ont besoin peuvent s'y référer. . J'espère que cela peut aider tout le monde.

Les éléments avec le plus grand nombre d'occurrences et le deuxième plus grand nombre d'occurrences dans le tableau d'entiers

Utilisez le tableau de hachage

function f(arr){
  var i;
  var length=arr.length;
  var hash=[];//使用哈希数组
  for(i=0;i<length;i++){
    if(!hash[arr[i]])hash[arr[i]]=1;//没有初始化的数组元素为undefined,undefined++为NaN
    else hash[arr[i]]++;
  }
  var max=0;//最多的次数
  var maxV;//出现最多的元素
  var second=0;//第二多的次数
  var secondV;//出现第二多的元素
  hash.forEach(function(item,index){//forEach函数会跳过空元素
    if(item>max){
      second=max;
      secondV=maxV;
      max=item;
      maxV=index;//用索引来保存原数组的值
    }else if(item>second){
      second=item;
      secondV=index;
    }
  });
  return {max,maxV,second,secondV};
}
var arr=[2,2,2,2,3,4,5,4,3,1,4,4,100,100];
var {max,maxV,second,secondV}=f(arr);//ES的元素解构赋值
console.log(max,maxV,second,secondV);

pour exécuter le résultat :

Les éléments avec le plus grand nombre et le deuxième plus grand nombre d'occurrences dans le tableau

Utilisez des objets pour enregistrer les valeurs et les heures

function f(arr){
  var temp=[];//对象数组
  var i;
  temp[0]={value:arr[0],index:1};//保存数组元素出现的次数和值
  arr.sort();
  for(i=1;i<arr.length;i++){
    if(arr[i]==arr[i-1]){
      temp[temp.length-1].index++;
    }else{//不相同则新增一个对象元素
      temp.push({index:1,value:arr[i]});
    }
  }
  temp.sort(function(a,b){//按照出现次数从大到小排列
    return a.index<b.index;
  })
  var max=temp[0].index;
  var maxV=temp[0].value;
  var second=temp[1].index;
  var secondV=temp[1].value;
  return {max,maxV,second,secondV};
}
var arr=[2,2,3,4,5,100,100,,3,1,4,4,100,100];
var {max,maxV,second,secondV}=f(arr);
console.log(max,maxV,second,secondV);

Exécuter les résultats :

Cette méthode peut être utilisée non seulement pour les statistiques de tableaux d'entiers, mais également pour les tableaux de caractères

Le code ci-dessus est écrit sous forme ES6

function f(arr){
  class num{
    constructor(value){
      this.value=value;
      this.index=1;
    }
    add(){
      this.index++;
    }
  }
  arr.sort();
  let temp=[];
  temp[0]=new num(arr[0]);
  for(let i=1;i<arr.length;i++){
    if(arr[i]==arr[i-1]){
      temp[temp.length-1].add();
    }else{
      temp.push(new num(arr[i]));
    }
  }
  temp.sort(function(a,b){
    return a.index<b.index;
  })
  let max=temp[0].index;
  let maxV=temp[0].value;
  let second=temp[1].index;
  let secondV=temp[1].value;
  return {max,maxV,second,secondV};
}
var arr=['a','b','a','b','a','c','d','d','d','d'];
var {max,maxV,second,secondV}=f(arr);
console.log(max,maxV,second,secondV);

Résultats en cours d'exécution :

Recommandations associées :

js obtient tous les éléments de tableau aléatoires non répétitifs dans un tableau [original]_javascript skills

Méthode JS pour obtenir le dernier élément d'un tableau_javascript skills

Méthode JS pour obtenir la valeur maximale, la valeur minimale et la longueur d'un tableau_javascript compétences

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn