json对象循环遍历
2017-07-24 21:23
197 查看
测试的json对象:
需要将json对象变为同一级:
方法一:
循环递归
方法二:(类似java中文件夹遍历)
经过测试,两个运行时间:
递归:0.55左右
遍历:0.66左右
为什么递归的时间反而比较少?
因为在文件夹遍历中是不停地取数组的长度,这个花费时间比较长,相当于多遍历一次数组,时间复杂度变成了O(n^2).
var testJson={ "errno": 0, "errmsg": "成功", "data": { "config_list": { "reg_conf": { "s":{ "ss":'ss', "m":{ "mm":'mm', "j":{ "leng":'22', "sf":{ "gf":'ss' } } } } } } } }
需要将json对象变为同一级:
方法一:
循环递归
const formatFromServer=(data,formatData={})=>{ for(item in data){ if(isJsonObject(data[item])){ formatFromServer(data[item],formatData); }else{ formatData[item]=data[item]; } } return formatData; } console.time("循环"); formatFromServer(testJson); console.timeEnd("循环");
方法二:(类似java中文件夹遍历)
const formatFromServer=(data,formatData={})=>{ let ma=[]; for(item in data){ if(isJsonObject(data[item])){ ma.push(data[item]); }else{ formatData[item]=data[item]; } } for(let i=0;i<ma.length;i++){ for(item in ma[i]){ if(isJsonObject(ma[i][item])){ ma.push(ma[i][item]); }else{ formatData[item]=ma[i][item]; } } } return formatData; } console.time("循环"); formatFromServer(testJson); console.timeEnd("循环");
经过测试,两个运行时间:
递归:0.55左右
遍历:0.66左右
为什么递归的时间反而比较少?
因为在文件夹遍历中是不停地取数组的长度,这个花费时间比较长,相当于多遍历一次数组,时间复杂度变成了O(n^2).
相关文章推荐
- 在js中循环输出php数组(传值的时候,数组转化为json,这样你可以遍历json对象。)
- 使用for in循环遍历json对象的数据
- 遍历json对象的属性和值,并循环动态定义声明变量
- 在js中循环遍历json对象
- table追加td,循环遍历得到table数据,后台json转对象
- for/in 循环遍历对象的属性
- JSON对象长度和遍历方法(转)
- js遍历数组、对象、json
- jquery遍历筛选数组的几种方法和遍历解析json对象
- 使用 EntityFramework后把一个对象序列化成json字符串引起循环引用的问题
- JavaScript基础 使用 for in 循环遍历 window对象的所有属性
- 使用ng-repeat遍历json对象
- $.grep ,$.map,jquery筛选数组之grep、each、inArray、map的用法及遍历json对象
- js中json对象不规律key的遍历实现和json对象length属性的调用
- jquery筛选数组之grep、each、inArray、map的用法及遍历json对象
- JS 循环遍历JSON数据 分类: JS技术 JS JQuery 2010-12-01 13:56 43646人阅读 评论(5) 收藏 举报 jsonc JSON数据如:{"options":"[{
- for/in 循环遍历对象的属性
- $.each遍历json对象
- 复选框选中table一行的数据,并组成JSON数组对象传递到后台,在后台解析遍历
- jquery 实现Ajax,JS 循环遍历JSON数据