2016-09-29 3 views
-1

У меня есть объект, как показано ниже, я хотел бы, чтобы удалить все значения ключа, где ключ = «/»Подчеркивание фильтр объект

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', 
      } 
     } 
}; 

мой текущий код

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

ли у Вас есть вопрос или вы были просто получить, что от груди. –

+0

жаль, что это вопрос, есть ли у вас ответ? –

+1

У меня есть один, это намного проще, потому что он не использует всю библиотеку для чего-то действительно простого -> https://jsfiddle.net/qspunug6/1/ – adeneo

ответ

1

Я считаю, что ты используя неправильную переменную для вашей внутренней функции.

EDIT: Извините, я ленился и пытался писать без тестирования. Выше утверждение верно, но есть несколько других ошибок, а также, адресованные в обновленном коде ниже

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

к сожалению это не работает –

+1

Исправлено. Было несколько других ошибок, которые я не исправил в первом запуске. –

+0

@ dominic-aquiliana это исправляет спасибо –