>  기사  >  웹 프론트엔드  >  배열에서 가장 빈번한 요소를 가져오는 JS 방법에 대한 자세한 설명

배열에서 가장 빈번한 요소를 가져오는 JS 방법에 대한 자세한 설명

小云云
小云云원래의
2018-01-20 10:15:365295검색

이 글에서는 배열에서 가장 빈번하고 두 번째로 자주 발생하는 요소를 얻는 JS의 방법을 주로 소개합니다. 여기에는 JavaScript의 순회, 정렬, 판단, 쿼리 및 기타 배열 관련 작업 기술이 포함됩니다. 그것이 모두에게 도움이 되기를 바랍니다.

정수 배열에서 가장 빈번하고 두 번째로 자주 발생하는 요소

해시 배열을 사용하세요

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);

실행 결과:

배열에서 가장 자주 발생하고 두 번째로 자주 발생하는 요소

객체를 사용하여 저장 값과 횟수

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);

실행 결과:

이 메서드는 정수 배열의 통계뿐만 아니라 문자 배열에도 사용할 수 있습니다.

위 코드는 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);

실행 결과 :

관련 권장 사항:

js 배열에서 반복되지 않는 임의의 배열 요소를 가져옵니다. [원본]_javascript Skills

js array_javascript Skill의 마지막 요소를 가져옵니다.

JS 최대값을 가져옵니다. 배열의 값, 최소값 및 길이 방법_자바스크립트 기술

위 내용은 배열에서 가장 빈번한 요소를 가져오는 JS 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.