【问题标题】:can you get var name from object with nested objects with lodash?你能从带有 lodash 的嵌套对象的对象中获取 var 名称吗?
【发布时间】:2016-10-07 15:54:47
【问题描述】:

https://jsfiddle.net/adamchenwei/Lyg2jy61/7/

已解决的版本: https://jsfiddle.net/adamchenwei/Lyg2jy61/10/

由于某种原因,findKey 为父级顶层获得了undefined 我的目标是用 lodash 得到 result = 'myName';

    var obj = {
    	myName: {
      	Adam: 'Man',
      },
      herName: {
      	Eve: 'Woman',
      },
    };
    
    var result = _.findKey(obj, '0'); //as you can see somehow its undefined!
    
    var result2 = _.findKey(obj.myName, '0');
    
    console.log(result);//objective is to get the result = 'myName' with lodash;
    
    console.log(result2);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.16.4/lodash.min.js"></script>

【问题讨论】:

  • 是什么让你认为你不会得到undefinedThat isn't how findKey works.
  • @MikeC 查看来自result2的结果
  • 您期望使用该代码实际得到什么?
  • @Ezeewei 我明白了。您没有任何具有属性 '0' 的对象,这是真的。
  • @vlaz 将我的代码中的注释复制到问题中。

标签: javascript object lodash


【解决方案1】:

看起来您实际上想要做的是获取对象的第一个键。要获取对象的键,可以使用_.keys。然后只需检索第一个。

var obj = {
  myName: {
    Adam: 'Man',
  },
  herName: {
    Eve: 'Woman',
  },
};

console.log(_.keys(obj)[0]);

// Or if you want to do it exclusively with lodash functions
console.log(_.first(_.keys(obj)));

// or
console.log(_.head(_.keys(obj)));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.16.4/lodash.min.js"></script>

【讨论】:

    【解决方案2】:

    尚不清楚您究竟在追求什么,但在您发布的对象上使用 _.findKey 会像这样工作:

    https://jsfiddle.net/Lyg2jy61/8/

    var obj = {
        myName: {
            Adam: 'Man',
        },
        herName: {
            Eve: 'Woman',
        }
    };
    
    console.log(_.findKey(obj, function(o) { return !!o.Adam; }));
    

    如果你只想要第一个键:_.keys(obj)[0]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-25
      • 1970-01-01
      相关资源
      最近更新 更多