js遍历map

记录一下,可以直接跳过,看下面的错误和正确示范

今天在写项目的时候,程序中的一个操作是需要在更新画布的同时将对应的json也进行同步更新,而更新这个json时需要将一个map对象转为json格式,然后赋值给json 的一个属性[暂时叫这个属性为 jMap]. 但每次更新json后,json的jMap属性都为空,因为这个操作的代码逻辑相对比较复杂,而且一开始也没想到会是这里出问题,所以这个问题找了找了将近两个小时才发现问题的根源,就是出在将map对象转为json格式上,先看一下我之前的错误示范:

错误的遍历方法
//这个是错误示范,这样是进不了for循环的
let arr = new Array();
for (let i in map){
		let temp={"name":'',"val":''};
		temp.name=i;
		temp.val=map[i];
		arr.push(temp);
	}
正确的遍历方法(之一):
let arr = new Array();
map.forEach(function(value, key, map)
  {
    let temp={"name":'',"val":''};
    temp.name=key;
    temp.val=value;
    arr.push(temp);
  })
[可以不看]总结:

之所以这么久才定位到出错位置,一方面是这个操作的逻辑有点绕,另一方面就是这里的代码之前是可以进入for循环的冰正确执行,所以一直没想到会是这里的问题,至于之前为什么可以使用,我认为有几种可能:
可能1:
之前的代码有一些操作我没有注意到,导致这个对象哪里出现了问题,这个可能性不大
可能2:
之前的可以用错误示范的代码正确运行,是因为之前只有一个保存操作,所以可以遍历,而之后新增的一些操作将这个map不停进行转换和包装,所以这时的map里面的格式可能和之前不一样,所以无法遍历,这样说的话,其实上面的错误示范的代码也是可以遍历map的…
反正上面的两种方法,错误的方法不行,就试试正确的示范方法,正确的示范方法不行,就试试错误的,应该会有一种可以.已经半夜12点了,这个问题之后有空再好好研究一下,再重写这个博客,溜了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值