• 1
  • 新人请关照

请问大家这个递归怎么写才能达到预期结果?

let apis = {
  home: {
    index: {
      url: '/index',
      auth: false
    },
    tab: {
      url: '/tab',
      auth: true
    }
  },
  test: {
    test: {
      url: '/test',
      auth: false
    }
  }
}

let getItem = function (obj){
  for(let item in obj){
    if(obj.url === '/test') return
    if(obj[item] instanceof Object)
      getItem(obj[item])
  }
  return obj
}

怎么写才能得到下面的预期结果:

{
  url: '/test',
  auth: false
}

搞了一晚上 没搞出来,还望大家帮我解决一下,谢谢大家

阅读 104
评论
    1 个回答
    • 2.6k
    function findItem(data, url) {
        for(var key in data) {
            var value = data[key];
            if(value == url) return data;
            if(Object.prototype.toString.call(value) == '[object Object]') {
                var item = findItem(value, url);
                if(item) return item;
            }
        }
    }
    
    function findItem2(data, url) {
        for(var key in data) {
            var value = data[key];
            if(Object.prototype.toString.call(value) == '[object Object]') {
                if(value.url == url) return value;
                else {
                    var item = findItem2(value, url);
                    if(item) return item;
                }
            }
        }
    }
      相似问题
      推荐文章