javascript - 如何动态遍历 JSON 数据并进行更改..?

标签 javascript arrays json parsing object

我有一个像 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/

相关文章:

javascript - ng-include 不会每次使用 $scope 都渲染部分 View

android - 从自定义 VolleyCallback 接口(interface)返回 JSON 到调用方法

c++ - 复制存储在内存映射文件中的数组的一部分

服务器上的 JSON 解析与解析客户端

ios - 从 iOS 中 NSDictionary 内的字典中检索值

javascript - 我需要井字棋游戏的帮助,但我无法更改回合

javascript - 返回 SQL 查询的每隔一行

javascript - 有没有办法检测 Javascript 中的 DOM 节点更改?

c++ - 访问 std::pair 数组的元素时出错

java - 将数组列表中的随机项目放入 JLabel