2016-11-29 1 views
8

만 필터와 독특한 배열을 얻을 수 있습니다 :어떻게 배열이 자바 스크립트

var a = [2,3,4,5,5,4] 

은 내가 시도

b = [2,3,4,5] 

처럼 지정된 배열에서 독특한 배열을하고 싶지을

a.filter(function(d){return b.indexOf(d)>-1}) 

저는 for 루프를 사용하고 싶지 않습니다. 인덱스 - -

+5

이 http://stackoverflow.com/questions/9229645/remove-duplicates-from-javascript-array –

+0

여기에 여러 예 - HTTP : //www.jstips. (배열 세트를 사용하여) – ioneyed

+0

lodash 라이브러리 (https://lodash.com/docs/#uniq)를 사용하십시오. – Pratap

답변

11

당신은 두 번째의 도움으로, 자바 스크립트에서 그것을 간단하게 할 수있는 filter 방법의 매개 변수 :

var a = [2,3,4,5,5,4]; 
a.filter(function(value, index){ return a.indexOf(value) == index }); 
+0

내가 이것을 설명하면 기쁠 것입니다. "function (d, i) {return a.indexOf (d) == i}" –

+2

매개 변수에있는 것은 색인을위한 것입니다. 마지막 5 초를 검사 할 때 색인은 4이지만 indexOf는 3이되므로 일치하지 않습니다. 그러므로 그것은 밖으로 여과한다 – Ash

+0

감사합니다. 당신은 gi을 가지고있다. 이 문제에 간단하고 까다 롭고 훌륭한 답변을드립니다. –

0
var b = a.filter(function(item, index, inputArray) { 
     return inputArray.indexOf(item) == index; 
}); 
+2

코드에 설명을 추가하십시오. –

+0

Yaser Adel Mehraban sloution을 참조하십시오. –

2

이 각도 관련 문제가되지 않습니다. 사용중인 라이브러리에 따라 두 가지 방법으로 해결할 수 있습니다.

당신이 jQuery를 사용하는 경우 :

var uniqeElements = $.unique([2,3,4,5,5,4]); 

출력은 다음과 같습니다

[2,3,4,5] 

당신이 밑줄 사용하는 경우

var uniqeElements = _.uniq([2,3,4,5,5,4]); 

같은 출력을.

그리고 순수 JS 코드 :

var unique = [2,3,4,5,5,4].filter(function(elem, index, self) { 
    return index == self.indexOf(elem); 
}) 
관련 문제