作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个像 JSON 格式的 map 数据
var map = {
level1 : {
x : {name:'level1 x' , },
y : {name:'level1 y'}
},
level2 : {
x : {name:'level2 x'},
y : {name:'level2 y'}
}
}
我需要遍历这些数据,我将遍历路径作为字符串
"level1 x name" , "level2 y name";
我如何解析该字符串路径中的 JSON 数据..??
我尝试的是,
var path = "level1 x name".split(" ");
var pointer = map; // assuming it will take reference of map and change will cause to map also
for (var i = 0, len = path.length; i < len; i++) {
if(pointer){
pointer = pointer[path[i]];
}else{
pointer = map[path[i]];
}
}
pointer = "level1 xx";
console.log(map);
但是 map 数据没有改变..如何循环引用并更改值..?
最佳答案
这就是你获得值(value)的方式:
var name = [map].concat("level1 x name".split(" ")).reduce(function(prev, curr) {
return prev[curr];
});
console.log(name);
// -> 'level1 x'
JavaScript 按值传递参数,而不是按引用传递参数。
为了您的方便,我更改了您的代码以完成您的要求:
var path = "level1 x name".split(" ");
var pointer = map; // assuming it will take reference of map and change will cause to map also
for (var i = 0, len = path.length-1; i < len; i++) {
if(pointer){
pointer = pointer[path[i]];
}else{
pointer = map[path[i]];
}
}
pointer[path[path.length-1]] = "level1 xx";
console.log(map);
关于javascript - 如何动态遍历 JSON 数据并进行更改..?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14357933/
我是一名优秀的程序员,十分优秀!