有没有办法获得
的价值{
"first": "first-string",
"second-array": [
{
"first-Obj": 2
}
]
}
有没有办法通过使用类似字符串
的路径来获取或更新值ex: to change the first-obj's value to 1000
changeTheValueAt('second-array/0/firstObj', 1000)
是否有任何类似上述changeTheValueAt或方法的函数。
答案 0 :(得分:5)
使用以下功能 -
function changeTheValueAt(obj, path, value) {
var parts = path.split("/"),
final = obj[parts[0]],
i;
for (i = 1; i < parts.length; i++) {
if (i + 1 < parts.length) {
final = final[parts[i]];
}
else {
final[parts[i]] = value;
}
}
}
然后像这样调用它 -
var ob = {
"first": "first-string",
"second-array": [
{
"first-Obj": 2
}
]
};
changeTheValueAt(ob, "second-array/0/first-Obj", 1000)
alert(ob["second-array"][0]["first-Obj"]);
答案 1 :(得分:-3)
由于第二个数组是一个数组,因此无法按名称访问它。您可以通过索引访问它,也可以迭代并查找值并在找到时进行更改。
var yourObj = {
"first": "first-string",
"second-array": [
{
"first-Obj": 2
}
]
};
yourObject.second-array[0].first-Obj = 1000;
您可以执行以下操作:
var changeFirstObj = function(node1, node2, new val){
yourObj[node1].forEach(o, i){
for(var prop in o){
if(prop == node2){
o[node2]=newVal;
}
};
changeFirstObj('second-array', 'first-Obj', 1000);
但那不是很灵活。