【发布时间】:2014-10-28 21:11:14
【问题描述】:
我想访问(获取/设置)带有变量的nestedJS 对象。
例如,静态它看起来像这样:
$obj.children.12.children.32.Name; // Returns "Foo"
现在我有一个“路线”数组(或任何容易处理的东西):
["children",12,"children",32,"Name"]
又想得到对象的值。
就像我在 Stackover 上看到的 here 一样,有一种非常简单的方法可以做到这一点(解决方案 2)。
但是,现在我想更改传递的键/路由的值。有什么办法吗?
非常感谢!
编辑: 如果对我有帮助,我可以使用 jQuery/Angluar-Features。
【问题讨论】:
-
假设你写了一个像
getPath(obj, pathArray)这样的getter,你可以写一个settersetValueAtPath(obj, pathArray, valToStore),它的作用与getPath完全相同,只是它的循环在倒数第二个对象处停止(例如,i < pathArray.length - 1) 和secondToLastItem[finalKey] = valToStore. -
感谢您的回复,@apsillers。我很难理解二传手如何工作。如果我执行 secondToLastObj[finalKey] = valToStore - 该值存储在变量“secondToLastObj”中,而不是对象本身中,对吗?但我想在包含所有数据的“大”对象中更改它。
-
@Tream 它也将在大对象中进行更改。变量
secondToLastObj只指向大对象中的部分,数据并没有实际存储在那里。 -
@apsillers,我会尝试一下,我相信它会起作用,因为你这么说。但为什么?我知道 PHP 的语法:foreach($x as $k=>&v){}。现在 $v 的变化也会影响 $x 。但是它是如何在没有任何额外语法的情况下在一个简单的 for() 循环中工作的呢?非常感谢您的帮助!
标签: javascript