2017-10-16 3 views
-1

Ich habe eine komplexe json wie folgt:Rohr für komplexe json in Angular 2

dashboardMenu:[ 
    { 
     category:'Physical Inventory', 
     subCategory:[ 
     { 
      'subcategory':'Upload PI Count Schedule', 
      'icon':'glyphicon-time', 
      'shortcode':'A1', 
      'router':'/physical-inventory/PIUpload' 
     }, 
     { 
      'subcategory':'Review PI Count Schedule', 
      'icon':'glyphicon-list-alt', 
      'shortcode':'B1', 
      'router':'/physical-inventory/PIReview' 
     }, 
     { 
      'subcategory':'Manage PI Group', 
      'icon':'glyphicon-wrench', 
      'shortcode':'B1', 

     } 
     ] 
    }, 
    { 
     category:'Notification Management', 
     subCategory:[ 
     { 
      'subcategory':'Create Notification', 
      'icon':'glyphicon-envelope', 
      'shortcode':'A1', 
      'router':'/notification-management/createNotification' 
     }, 
     { 
      'subcategory':'Review Notification', 
      'icon':'glyphicon-list-alt', 
      'shortcode':'B1' 
     } 
     ] 

Ich möchte Rohr hinzufügen, die Daten herauszufiltern, auf der Grundlage der Kategorie wird, Unterkategorie. Ich habe es geschafft, die Daten aus der Kategorie herauszufiltern, aber ich bin nicht in der Lage, Daten aus der Unterkategorie zu filtern. Pipe -

if (stringToSearch !== undefined) 

return items 
.filter(item => 
    item.category.toLowerCase().indexOf(stringToSearch) !== -1 || item.category.toLowerCase().indexOf(stringToSearch) !== -1 
); 

Antwort

0

Wenn Sie einen Weg suchen, Gegenstände zu erhalten, die eine der Subkategorie enthält versuchen Sie dies:

return items.filter((item) => { 
    const filtered = item.subCategory.filter((sub) => { 
     return sub.subcategory.toLowerCase().indexOf(stringToSearch) > -1; 
    }); 
    return item.category.toLowerCase().indexOf(stringToSearch) > -1 || filtered.length; 
}); 
+0

Danke, das funktioniert für eine der Subkategorie in Ordnung, ich habe Suche entweder nach Kategorie oder nach Unterkategorie. – Akanksha

+0

@Akanksha müssen Sie also logisches ODER hinzufügen, um zurückzukehren. Ich habe meine Antwort bearbeitet, um es dir zu zeigen. –

+0

Vielen Dank für Ihre Hilfe. Aber gibt es eine Möglichkeit, diese bestimmte Unterkategorie herauszufiltern? Zur Zeit bekomme ich auch alle anderen Subkategorien. Zum Beispiel, wenn ich nach Upload PI Count suche, sollte ich Inventur und dann nur PI Count subactegory hochladen – Akanksha