모두가 javascript의 배열에서 중복을 제거하는 기본 제공 함수가 없다는 것을 모두 알고 있습니다. 나는 이것이 또한 jQuery (DOM 선택을위한 유일한 기능을 가지고있다)에서 부족하다는 것을 알았다. 그리고 발견 된 가장 일반적인 스 니펫은 전체 배열과 각 엘리먼트에 대한 서브셋 (매우 효율적이지는 않다)을 검사한다. : javascript의 배열에 대한 unique()
for (var i = 0; i < arr.length; i++)
for (var j = i + 1; j < arr.length; j++)
if (arr[i] === arr[j])
//whatever
그래서 내가 만든 내 자신 :
function unique (arr) {
var hash = {}, result = [];
for (var i = 0; i < arr.length; i++)
if (!(arr[i] in hash)) { //it works with objects! in FF, at least
hash[arr[i]] = true;
result.push(arr[i]);
}
return result;
}
나는이 경우에 가장 적합한으로 받아 들여 다른 알고리즘이 있는지 궁금합니다 (또는 고정 할 수있는 명백한 결함을 볼 경우), 또는 , 당신이 자바 스크립트에서 이것을 필요로 할 때 (나는 jQuery가 유일한 프레임 워크가 아니며 다른 것들은 이미 다룰 수 있음을 알고있다).
이러한 배열은 스칼라 값을 포함합니까, 또는 실패 –
그리고 정렬 된 것인가의 가정이 있습니까? –