2013-07-24 51 views
5

Potrzebuję filtrować tablicę obiektów zawierającą zduplikowane tytuły, ale opis jest unikalny. Na przykładFiltrowanie tablicy obiektów z powielonymi tytułami i unikalnym opisem?

[ 
    { 
     "Title": "New York", 
     "Description": "A healthy and modernized transit system" 
    }, 
    { 
     "Title": "New York", 
     "Description": "changed transit system" 
    }, 
    { 
     "Title": "New York", 
     "Description": "xyz" 
    }, 
    { 
     "Title": "New York", 
     "Description": "abc" 
    }, 
    { 
     "Title": "chicago", 
     "Description": "jdfjjfj" 
    }, 
    { 
     "Title": "chicago", 
     "Description": "abcdfdjf" 
    } 
] 

Jak widać, tytuły są duplikat podczas gdy jego opis jest unique.So Czy ktoś może mi powiedzieć jak filtrować tę tablicę obiektów, które odfiltrowuje unikalny tytuł i opis jest unikatowy.

Zasadniczo filtrowanie powinno być takie, aby tytuł był na pierwszym miejscu dzięki poniższym unikalnym opisom.

+3

można zakładać, czego oczekujesz ta tablica wyglądać po jej przefiltrowaniu? Pokaż też, co dotychczas próbowałeś. –

+0

@JasonP: Dzięki za odpowiedź :), po prostu chciałem, aby tablica zawierała pojedyncze tytuły wraz z jej wieloma opisami, tak jak wspomniał jgroenen. –

Odpowiedz

2
var rs = {}; 
$.each(objs, function(i, obj) { 
    if (rs[obj.Title] === undefined) rs[obj.Title] = []; 
    rs[obj.Title].push(obj.Description); 
}); 

Sprawdź to na jsFiddle: http://jsfiddle.net/U6qu4/

+0

Wielkie dzięki, to działa :) –

0
for(var i=0;i<=objs.length;i++){ 
for(var j=i+1;j<=objs.length;j++){ 
    if(objs[i].Title==objs[j].Title || objs[i].Description==objs[j].Description){ 
    //do some stuff to filter 
     objs.splice(j,1) //it can be used to remove the matched element 
    } 
}