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

新手上路,请多包涵
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
}

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

阅读 1.4k
1 个回答
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;
            }
        }
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题