我想通過使用immutable.js將JSON對象的片段更新/替換爲其他部分。immutable.js - 替換複雜和嵌套對象中的節點
看看下面的例子。我們可以看到一些更復雜和嵌套的對象。用"id": "F"
代替節點,我想用其他編輯節點替換/更新。
根據docs我需要以某種方式得到keyPath
作爲數組,並將其傳遞給setIn(keyPath: Array<any>, value: any): Map<K, V>
函數。所以我需要以某種方式找到F keypath:['children',2,'children',0,'children',0](這是否正確?)。
這是簡化的例子。在我的情況下,我的keypath有更復雜的層次結構。如何通過immutable.js或普通的JS來做到這一點?這種方法是否正確?是否存在相同行爲的更優雅的解決方案(如果可能,完美地使用immutable.js函數)?
最好的問候,
拉法爾
例子:
{
"id": "A",
"children": [
{
"id": "B",
"children": [
]
},
{
"id": "C",
"children": [
]
},
{
"id": "D",
"children": [
{
"id": "E",
"children": [
{
"id": "F", // THIS NODE WILL BE UPDATED
"children": [
]
}
]
},
{
"id": "G",
"children": [
]
}
]
}
]
}
謝謝。你的答案後,我決定寫我自己的遞歸函數,它返回一個數組keyPath。現在我可以很容易地使用像setIn,updateIn等immutable.js函數。不過,我仍然想知道如何使用immutable.js函數(如.find(),findIndex()或育肥數據)來實現相同的結果。我不知道這些方法有什麼最好的表現。 –