【发布时间】:2015-02-26 18:23:40
【问题描述】:
我有一个从 json 解码的对象:
var data = [{
"parentSeries":1,
"children":[{
"BusinessRule":"ChrisTest2",
"ID":"ChrisTest2||3",
"childsub":3,
"jsonCondition":{
"parentSeries":1,
"children":[{
"RuleDefinition":"ChrisTest2||3",
"ID":"ChrisTest2||3||CondField1",
"Field":"CondField1",
"Test":"=1"
},{
"RuleDefinition":"ChrisTest2||3",
"ID":"ChrisTest2||3||CondField2",
"Field":"CondField2",
"Test":"=2"
}]
}
}]
}]
我想动态更新这个对象的任何元素。我有一个数组,显示我要更新的属性在哪里。例如:
var splitMap = ["jsonCondition", "children", "0", "Test"]
我有一个值,我想用传入的 (newValue) 来更新这个数组中的最后一个条目,并且我有一些代码来更新特定的嵌套项以包含这个新值:
if (splitMap.length > 0) {
var newdata = data;
for (var p = 0; p < splitMap.length-1; p++) {
newdata = newdata[splitMap[p]];
}
newdata[splitMap[splitMap.length - 1]] = newValue;
}
但我想不出办法将其更新为原始数据!我基本上是想做的
oldobject['jsonCondition']['children'][0] = newdata
或
oldobject['jsonCondition']['children'][0]['Test'] = newValue
...但我希望它根据地图数组的内容和长度计算出这条路径的键和深度。如果有帮助,我在我们的平台上有 jquery($.each?)!有任何想法吗?谢谢:)
【问题讨论】:
-
你有没有想过编写一个使用 $.each 并检查下一层是否是对象的递归函数?
-
splitMap数组从何而来?从那里开始,您可能能够存储一个对象引用,这将使其变得更加容易 -
谢谢大家,我可以在重复的问题上使用@Labithiotis 答案:)
标签: javascript jquery arrays json object