2017-12-16 16 views
0

고유 한 객체 배열을 만들려고합니다. 나는 많은 해결책을 시도한다. Finaly는 함수를 작성합니다. 그것은 작동하지만 다른 해결책이 있습니까? 그리고 whay $. 고유하지 않는 작품?자바 스크립트 객체 배열에서 중복을 제거하기 위해 JSON을 사용합니다.

var a = [{"id": "id1", "name": "id1"},{"id": "id1", "name": "id1"},{"id": "id2", "name": "id2"}]; 
var jq = $.unique(a); 
console.log("jq=",jq); // NOT UNIQUE!? 
var myfunc = unique(a); 
console.log("myfunc=",myfunc); // UNIQUE! 

function unique(arr){ 
    var uniqueArr=[]; 
    var jsonarr = []; 
    $.each(arr,function(ax, a){ 
     var j = JSON.stringify(a); 
     if(jsonarr.indexOf(j) == -1){ 
      jsonarr.push(j); 
      uniqueArr.push(a); 
     } 
    }); 
    return uniqueArr; 
} 
+0

https://stackoverflow.com/questions/23507853/remove-duplicate-objects-from-json-array –

+2

) (.unique 왜 $에 관해서 jQuery 문서에 따르면 DOM 요소 배열을 정렬하는 데 사용됩니다. DOM 요소의 배열을 제공하지 않는다면, 왜 작동하지 않는 것일 수 있습니다. https://api.jquery.com/jQuery.unique/를 참조하십시오. – AndroidNoobie

답변

0

lodash 라이브러리는도 구현이있다

_.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); 
// => [{ 'x': 1 }, { 'x': 2 }]