>  기사  >  웹 프론트엔드  >  흥미로운 JavaScript 질문: 배열에서 최대 발생 빈도를 가진 요소 찾기

흥미로운 JavaScript 질문: 배열에서 최대 발생 빈도를 가진 요소 찾기

黄舟
黄舟원래의
2017-02-04 15:45:051492검색

배열이 주어지면 이를 highRank(arr) 함수에 전달하고 배열에서 빈도가 가장 높은 요소를 반환합니다.

발생 빈도가 가장 높은 요소가 여러 개 있는 경우 가장 큰 값을 갖는 요소를 반환합니다.

예:

arr = [12, 10, 8, 12, 7, 6, 4, 10, 12];  
highestRank(arr) //=> returns 12  
  
arr = [12, 10, 8, 12, 7, 6, 4, 10, 12, 10];  
highestRank(arr) //=> returns 12  
  
arr = [12, 10, 8, 8, 3, 3, 3, 3, 2, 4, 10, 12, 10];  
highestRank(arr) //=> returns 3

이러한 유형의 빈도 찾기의 경우 각 숫자가 얼마나 자주 나타나는지 통계를 만드는 것이 가장 좋습니다.


다음으로 빈도가 가장 높은 항목이나 숫자 그룹을 필터링합니다.

마지막으로 이 숫자 집합에서 가장 큰 숫자를 찾아 반환합니다.

저는 개인적으로 문제를 해결하기 위해 해시 객체를 사용하는 것을 선호하는데, 이는 효율적이고 열거하기 쉽습니다.

정렬도 해결할 수 있지만 효율성은 확실히 떨어집니다.

function highestRank(arr){  
    var hash = {};  
    var highest = 0;  
    var highestArray = [];  
    for(var i=0;i<arr.length;i++){  
        var cur = arr[i];  
        if(hash[cur]){  
            hash[cur] = 1 + hash[cur];  
        }  
        else{  
            hash[cur] = 1;  
        }  
        if(hash[cur] > highest){  
            highest = hash[cur];  
        }  
    }  
    for(var j in hash){  
        if(hash.hasOwnProperty(j)){  
            if(hash[j] === highest){  
                highestArray.push(j);  
            }  
        }  
    }  
    return Math.max.apply(null,highestArray);  
}

위는 흥미로운 JavaScript 질문입니다. 배열에서 발생 빈도가 가장 높은 요소의 내용을 찾으세요. 더 많은 관련 내용을 보시려면 PHP 중국어 웹사이트(www.php.cn)를 주목해주세요!


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