1     function traverse(objNmae,obj,url){
url = url || objNmae;
if(typeof obj === "object" ){
//for in 方法
for(let i in obj){
url += ("=>"+i);
arguments.callee(i,obj[i],url);
}
//forEach 方法
obj.forEach(function(value,index){
url += ("=>"+index);
arguments.callee(index,value,url);
});
}else if(typeof obj === "string" || typeof obj === "number"){
console.log(url+objNmae+":"+obj);
return;
}
}

for in 方法 和forEach方法,方法的功能是同样的,就是遍历一个对象集,并且输出对象中所有末端元素的路径。

接下来我们对下面的这个对象进行遍历

     var itg_data        = [{"itg_num":"1200","itg_category":"rew_gold","itg_reward_num":"1","itg_sum_num":"661","itg_place":"","pic":"\/Uploads\/game\/reward\/357203060783037259.png","goods_unit":"\u679a","goods_name":null},{"itg_num":"1400","itg_category":"rew_goods","itg_reward_num":"4","itg_sum_num":"656","itg_place":"fresh","pic":"\/Uploads\/UploadsShop\/2017-07-05\/595c823c86cf7.jpg","goods_unit":"\u679a","goods_name":"\u65e0\u6297\u571f\u9e21\u86cb"},{"itg_num":"1600","itg_category":"rew_gold","itg_reward_num":"2","itg_sum_num":"555","itg_place":"","pic":"\/Uploads\/game\/reward\/357203060783037259.png","goods_unit":"\u679a","goods_name":null},{"itg_num":"1800","itg_category":"rew_goods","itg_reward_num":"8","itg_sum_num":"492","itg_place":"fresh","pic":"\/Uploads\/UploadsShop\/2017-07-05\/595c823c86cf7.jpg","goods_unit":"\u679a","goods_name":"\u65e0\u6297\u571f\u9e21\u86cb"},{"itg_num":"2500","itg_category":"rew_goods","itg_reward_num":"1","itg_sum_num":"555","itg_place":"fresh","pic":"\/Uploads\/UploadsShop\/2017-06-22\/594b602919d9d.jpg","goods_unit":"\u53ea","goods_name":"\u6bcd\u9e21\uff08\u6563\u517b\uff09"}];

for in 方法

但是在这里 forEach方法会报错,

提示最大调用栈大小超过。但是使用for in 就没有这样的问题

由此可见,forEach在递归中因为,有些对象树过深,对导致其堆栈溢出,forEach不适合用在递归中,可以使用for in

最新文章

  1. Openfire的启动过程与session管理
  2. 应用程序代理AppDelegate解析
  3. IntelliJ IDEA 设置 编辑器字体大小
  4. Codeforces 583D. Once Again... (LIS变形)
  5. DJANGO问题--Error: ‘ManyRelatedManager’ object is not iterable
  6. RedHat9上安装jdk
  7. eval函数
  8. 建立Go工作环境
  9. 每周问题系列 - JavaFX界面没响应,Maven编译自动忽略rt包
  10. webservice部署到服务器报错
  11. [Luogu4149][IOI2011]Race
  12. NOIP知识点
  13. 用es5原生模仿-es6Promise异步处理
  14. MySQL常用SQL语句优化
  15. mysql 事务学习
  16. [BZOJ 1013][JSOI 2008] 球形空间产生器sphere 题解(高斯消元)
  17. Unity--------------------万向锁的概念
  18. with as (转)
  19. 20155209林虹宇虚拟机的安装及一点Linux的学习
  20. day33 Python与金融量化分析(三)

热门文章

  1. javascript: 禁用右键、文本选择功能、复制按键
  2. spring 注释
  3. shell查词典
  4. redis的set()方法参数
  5. SQL语句优化方式
  6. 通过URL传参数,然后第二个页面需要获取参数
  7. Python - zipfile 乱码问题解决
  8. springCloud的使用03-----服务消费者(feign)
  9. [fw]error: aggregate value used where an integer was expected
  10. 怎么避免从删库到跑路 -- 详解 mysql binlog 的配置与使用