我有了在它的對象數據存儲的存儲對象,像這樣遍歷:動態物體的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