2014-11-28 2 views
5

특정 속성 값을 가진 중복 개체를 제거하여 고유 개체 배열을 원합니다. 예를 들어, 아래의 코드 스 니펫에서 event1과 event2는 동일한 제목과 동일한 시작 값을 가지며 event3과 event4는 제목은 같지만 시작 시간이 다릅니다.특정 개체 속성을 기반으로하는 jQuery 고유 개체

event4와 동일한 제목 및 시작 값을 가지고 있지만 동일한 제목 만 가지고 있으므로 객체 배열에서 event2를 제거하려고합니다.

내 코드 같이 보인다 : 제목 만 검사 위

var event1 = {id: 1, title: 'ABC', start: '10'}; 
var event2 = {id: 2, title: 'ABC', start: '10'}; 
var event3 = {id: 3, title: 'DEF', start: '12'}; 
var event4 = {id: 4, title: 'DEF', start: '20'}; 

var a=[]; 
a.push(event1); 
a.push(event2); 
a.push(event3); 
a.push(event4); 


//I tried this, but this code checks for title only. 
var titles = []; 
var b = []; 

$.each(a, function(index, event) { 
    if ($.inArray(event.title, titles) === -1) { 
     titles.push(event.title); 
     b.push(event); 
    } 
}); 

console.log(b); //Gives output as [Object { id=1, title="ABC", start="10"}, Object { id=3, title="DEF", start="12"}] 
// The right output should be: [Object { id=1, title="ABC", start="10"}, Object { id=3, title="DEF", start="12"}, Object { id=3, title="DEF", start="20"}] 

내 코드입니다. 나는 두 개의 다른 속성에 대해 작동하도록 만들지 못했습니다. 사전에 도움을 주셔서 감사합니다.

답변

12

이 시도 : 문서에 대해서는

var event1 = {id: 1, title: 'ABC', start: '10'}; 
var event2 = {id: 2, title: 'ABC', start: '10'}; 
var event3 = {id: 3, title: 'DEF', start: '12'}; 
var event4 = {id: 4, title: 'DEF', start: '20'}; 

var events = [event1, event2, event3, event4]; 

var result = events.reduce(function(memo, e1){ 
    var matches = memo.filter(function(e2){ 
    return e1.title == e2.title && e1.start == e2.start 
    }) 
    if (matches.length == 0) 
    memo.push(e1) 
    return memo; 
}, []) 

console.log(result) 
+0

와우를 참조하십시오! 정확히 내가 필요한 대답. @ Furqan 도움에 감사드립니다! – Lalu

+0

부끄러운 필터가 작동하지 않습니다 Levitikon

2

, jQuery를 사용하여 :

$.each(a, function(index, event) { 
    var events = $.grep(b, function (e) { 
     return event.title === e.title && 
      event.start === e.start; 
    }); 
    if (events.length === 0) { 
     b.push(event); 
    } 
}); 

demo

+0

매력처럼 작동합니다! 감사합니다 @dreyescat – Lalu

관련 문제