【问题标题】:Using lodash (or equivalent) _.get() function to get object by reference and not value [duplicate]使用lodash(或等效)_.get()函数通过引用而不是值来获取对象[重复]
【发布时间】:2019-11-12 18:13:45
【问题描述】:

_.get() 函数允许您使用字符串从 Json 对象中深度获取值。 但是它获取值而不是引用,是获取对 Json 对象的引用的等效命令(或差异方式)

示例:


var object = { 'a': [{ 'b': { 'c': 3 } }] };

const r = _.get(object, 'a[0].b');
r <<< is new object not a ref.

谢谢,

肖恩

【问题讨论】:

  • 引用是什么意思?对号码3的引用?
  • 可以通过var ref = _.get(object, 'a[0].b')获取对象{ 'c': 3 }_.get 将返回对该对象的引用。更改ref.c 将更改原始对象
  • "r 是新对象而不是引用"。那么尝试更改它的属性并注意原始对象会发生什么。 r 从原始对象引用对象 { 'c': 3 }。这可以通过检查object.a[0].b === r 来证明
  • github 链接中的问题完全不同。他们正试图获取根对象本身。您正在尝试获取一个返回引用的嵌套对象:repl.it/repls/UselessVeneratedRobodoc

标签: javascript json underscore.js lodash


【解决方案1】:

_.get 函数不会创建新对象。它已经返回一个“引用”。

const object = { 'a': [{ 'b': { 'c': 3 } }] };

const r = _.get(object, 'a[0].b');

console.log(r === object.a[0].b); // true
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"&gt;&lt;/script&gt;

【讨论】:

    猜你喜欢
    • 2014-06-11
    • 2019-11-09
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多