vue 去掉数组中的 __ob__ : Observer

192 阅读1分钟
  • __ob__: Observer 是 Vue 对数据监控添加的属性。
  • 如果你是使用 push添加的对象信息就会出现__ob__: Observer
  • 当数据中包含这个属性时,数据是不可枚举、不可遍历的。

问题说明

在开发中,接口获取到数据,通过push获取到新的数组,直接打印获取的是正确结果,但是赋值给 this.data 的数据后又携带了 __ob__: Observer 数组如下图所示:

解决

方法一:

对数据进行深拷贝,拷贝之后的结果没有 __ob__:Observer 有效,推荐

JSON.parse(JSON.stringify(this.data))

方法二:

使用 Object.assign 可以将数组转换为普通数组,同时再对数组中的对象进行转换,有效

let newArr = Object.assign([],data).map(item => {
    return Object.assign({},item)
})

方法三:

循环操作数据时,使用 for 循环, 不使用 forEach 或是 map,目前测试无效

for(let i=0;i<res.length;i++) {
  this.data.push(res[i].date)
}

方法四:

设置定时器 SetTimeout 来获取数据,没试过

mounted() {
   setTimeout(()=>{
   //这里就写你要执行的语句即可,先让数据库的数据加载进去数组中你在从数组中取值就好了
   },800)
}

总结

对数据进行一次深拷贝

参考文档