Vue中画词云图遇到数组push问题和 [__ob__: Observer]格式

今天用vue+echarts做词云图的时候,发现拿不到json格式的数据,这里主要有两个点:
1.在vue中使用this拿到data中的数据,然后给它赋值的话,得到的数据是[__ob__: Observer]格式 。
2.[__ob__: Observer]格式是vue对数据设置的监控器,双向绑定,不可以枚举。
先看一下我一开始使用push方法的代码:

//objGroup是我转换为{"":"","":"","":"",......}这种形式的数据
for (let key in objGroup) {
	//使用temp1实现将objGroup分为多个对象
    let temp1 = {};            
    temp1.name = key;
    temp1.value = objGroup[key];
    this.dataJson.push(temp1); 
    console.log(this.dataJson)                     
  }    

结果如图,得到的是[__ob__: Observer]格式的数据,但是在这里有点不确定是因为push还是因为用了this
在这里插入图片描述
所以我新定义一个空数组temp2,仅仅使用push方法,测试数据还能否变为[__ob__: Observer]格式,代码如下:

let temp2 = [];
for (let key in objGroup) {
 let temp1 = {};            
 temp1.name = key;
 temp1.value = objGroup[key];
 temp2.push(temp1)
 console.log(temp2)      
}
         

结果如图,说明不是push的问题,那就是this的问题了。
在这里插入图片描述
然后再使用this来测试一下,代码如下,我先用temp2拿到想要的数据,然后直接将temp2赋值给dataJson

let temp2 = [];
for (let key in objGroup) {
  let temp1 = {};            
  temp1.name = key;
  temp1.value = objGroup[key];             
  temp2.push(temp1)
  console.log(temp2)      
}
this.dataJson = temp2;
console.log(this.dataJson)

结果如图,我看到了不仅dataJson变为了[__ob__: Observer]格式,连temp2也变成了[__ob__: Observer]格式,因此这里就非常明显的说明了vue的双向绑定数据功能。
在这里插入图片描述
查找解决办法,找到一个如下代码,使用JSON.parse(JSON.stringify(temp2))进行深拷贝,博主说可以获取原始数据对象,但是,我试了之后,发现是temp2的数据没有被改为[__ob__: Observer]格式,dataJson仍然是[__ob__: Observer]格式。

let temp2 = [];
for (let key in objGroup) {
  let temp1 = {};            
  temp1.name = key;
  temp1.value = objGroup[key];            
  temp2.push(temp1)
  console.log(temp2)      
}
this.dataJson = JSON.parse(JSON.stringify(temp2));
console.log(this.dataJson);

结果如图:
在这里插入图片描述
改不了dataJson的格式,但是使用插值语法让template展示的dataJson是需要的数据格式。
所以,我就把数据交给vue让它自己改数据格式去展示,也就是将画词云图的方法放在获取数据的方法里面,然后使用插值语法调用获取数据的方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值