2016-09-29 1 views
-1

ich ein Objekt, wie unten ich alle Schlüsselwert löschen möchte, wo key = ‚/‘Unders ein Objekt auswählen,

let routes = { 
    '/dashboard': { 
     name : 'Dashboard', 
     component : appDashboard, 
     icon: 'fa fa-dashboard', 
     subRoutes: { 
      '/': { 

       component:appDashEcommerce 
      }, 
      '/ecommerce': { 
       name : 'Ecommerce', 
       component:appDashEcommerce 
      }, 

     } 

    }, 
    '/apps': { 
     name : 'Apps', 
     component : appAppsPage, 
     icon : 'fa fa-th', 
     subRoutes: { 
      '/': { 

       component:appInbox 
      }, 
      '/mailbox': { 
       name : 'maibox', 
       component : appInbox, 
       icon : 'fa fa-th', 
      } 
     } 
}; 

mein aktueller Code

var ret2 = _.omit(routes, function(val, key, object) { 
     if(_.has(val , 'subRoutes')){ 
      _.omit(val.subRoutes , function(v, k, o) { 
       return key === '/' 
      }) 
      }else{ 

      return key === '/' || key === '*' 
     } 
     }) 

    console.log(ret2) 
+2

Haben Sie eine Frage haben, oder waren Sie nur, dass Sie Ihre Brust zu bekommen. –

+0

Entschuldigung das ist eine Frage, hast du eine Antwort? –

+1

Ich habe eine, es ist aber viel einfacher, weil es nicht eine ganze Bibliothek zu etwas wirklich Einfaches verwendet -> https://jsfiddle.net/qspunug6/1/ – adeneo

Antwort

1

Ich glaube, du bist Verwenden Sie die falsche Variable für Ihre innere Funktion.

EDIT: Sorry, ich wurde faul und versuchte zu schreiben, ohne zu testen. Die obige Behauptung ist richtig, aber es gibt ein paar andere Fehler als auch, unter

im aktualisierten Code adressiert

https://jsfiddle.net/e708gyna/

//_.omitBy should be used for functions according to the lodash spec 
var ret2 = _.omitBy(routes, function(val, key, object) { 
    if(_.has(val , 'subRoutes')) { 
    //In order to use the result below, we need to store it 
    val.subRoutes = _.omitBy(val.subRoutes , function(v, k, o) { 
     //Since you're running this on the subRoutes 
     //you need to test the key that you've defined 
     //for this inner handler 
     return (k === '/'); 
    }) 
    } else { 
    return (key === '/' || key === '*'); 
    } 
}) 
+0

leider scheint dies nicht zu funktionieren –

+1

Fixed. Es gab ein paar andere Fehler, die ich im ersten Lauf nicht behoben habe. –

+0

@ dominic-aquiliana das behebt es dank –