我有了在它的对象数据存储的存储对象,像这样遍历:动态物体的NodeJS
data = {
name1: 'value1',
name2: 'value2',
child: {
name3: 'value3',
name4: 'value4'
}
}
我需要做的是通过数据变量,名称和价值,并有对象更新,就像这样:
update(data, 'name1', 'foobar');
这工作得很好,但这里的渔获:我需要能够发送点符号的名称,并将它更新正确的子属性。例如:
update(data, 'child.name3', 'foobar');
下面是我用做遍历代码:
function update(data, fieldName, value) {
var field = data
var fieldNameParts = fieldName.split('.');
while (fieldNameParts.length)
field = field[fieldNameParts.shift()];
field = (value === undefined) ? null : value;
}
所以问题是,“场”中包含了新的价值,但“data.child.name3 “ 才不是。如何遍历和更新主数据对象?
关于如何解决这个问题的任何想法?
不错的工作。我以为我尝试过,但我想我没有做到正确。这工作,并且比我的解决方案更好,因为它避免了eval()。谢谢! –
一个小错误:我认为最后一行应该是'field [fieldNameParts.shift()]'而不是'field [fieldNameParts]'... –
你在技术上是正确的。它仍然有效,因为具有1个项目的数组的字符串表示(由while确保)通常与该项目的字符串表示相同。我更新了我的答案,因为这不是我的意图,使用这种晦涩的功能:),这只是一个无害的错误。 – Tibos