2013-07-24 2 views
5

Ho bisogno di filtrare un array di oggetti che contiene titoli duplicati ma la descrizione è unica. Per esFiltraggio di un array di oggetti con titoli duplicati e descrizione univoca?

[ 
    { 
     "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" 
    } 
] 

Come si può vedere, i titoli sono duplicati mentre la sua descrizione è unique.So qualcuno può dirmi come filtrare questo array oggetto che filtra titolo unico e la descrizione di essere unico.

Fondamentalmente il filtro dovrebbe essere tale che il titolo venga prima con le sue seguenti descrizioni uniche.

+3

potete inserire ciò che vi aspettate questo array a guardare come dopo che è stato filtrato? E mostra anche ciò che hai provato finora. –

+0

@JasonP: Grazie per la tua risposta :), volevo solo un array per avere titoli singoli seguiti con le sue descrizioni multiple, proprio come ha detto jgroenen. –

risposta

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

controllarli su jsFiddle: http://jsfiddle.net/U6qu4/

+0

Grazie mille, funziona :) –

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 
    } 
}