获取嵌套对象的最后一项

时间:2016-05-23 02:59:09

标签: javascript

我正在使用真正的嵌套对象,有时是10级深度,最后一项始终是带数字的属性,例如:

let myObject = {

  levelOne: {
    levelTwo: {
      levelThree: 1
    }
  }
};

我想知道是否可能,在不知道属性的确切名称的情况下,获取最后一项并将数字增加1。

感谢。

3 个答案:

答案 0 :(得分:0)

请记住,这可以进行优化,并且可能应该使用hasOwnProperty。

您也可以将递归切换为一段时间。

这不是最好的解决方案。

你走了:

let myObject = {
  levelOne: {
    levelTwo: {
      levelThree: 1
    }
  }
};

function getLast(object){
  if (typeof object !== 'object'){
    return object;
  }
  for ( prop in object){
    return getLast(object[prop])
  }
}

console.log(getLast(myObject));

https://jsfiddle.net/o18hde10/1/

答案 1 :(得分:0)

下面是一些使用下划线循环键的伪代码。您需要根据输入数据对其进行修改。

function findObject(){
    _.some(myobject, function(val){
        if(_.isObject(val)){
            findObject(val);
        }
        if(_.isNumber(val)){
            return val;
        }
    });
}

答案 2 :(得分:0)

这是函数get inner object:

function innerObject(o) { 
  return Object.keys(o).reduce(function (r, k) { 
    return typeof o[k] === 'object' ? innerObject(o[k]) : (r[k] = o[k], r) 
  }, {}) 
}