【求助】JS中object对象的输出出现很诡异的错误

流云望风 2017-10-27 04:30:02
直接console.log (res);
是这样的
若是console.log(res[4]);
是这样的
但是很诡异的是若是console.log(res[4].Ox_min)就会输出10000,明明上图也不是10000,为什么会这样。
我在程序刚开始的时候写了一个初始化的函数,并直接调用了仅仅一次,那次把这个值设为10000的,同时其他的所有参数,都跟初始化的时候一模一样。求大神指教,到底为什么,该怎么解决。
...全文
371 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
彼小星 2017-10-27
  • 打赏
  • 举报
回复
楼主,可以说说你最后发现是什么原因造成的吗?
Go 旅城通票 2017-10-27
  • 打赏
  • 举报
回复
你后续修改过值了,chrome控制台你最后展开看到的是最后对象的值,不是当时打印的值。你要看即时值,打印转为json字符串 console.log(JSON.stringify(res))

Web开发学习资料推荐
jquery attr prop 区别
javascript客户端图片预览
当作看不见 2017-10-27
  • 打赏
  • 举报
回复
数组和对象都是引用类型 , var a = [1,2]; var b = a; a.push(3); console.log(b);[1,2,3] 也就是赋值并没有复制数组,而是引用同一个数组.对象也是一样. 那么就是如何深度复制数组和对象的问题了.最常用的方法就是遍历数组.一一赋值,如果是引用类型就是递归遍历. 字符串也是引用类型,但是字符串是不可修改的,每次修改都是新建新的字符串,所以没有这个问题. 不理解的,可以说明
trainee 2017-10-27
  • 打赏
  • 举报
回复 1
console.log出对象时, 只是写出这个对象引用, 当你展开时,显示的当前的值 鼠标移到"兰色的i", 有这警告提示.
js世界 2017-10-27
  • 打赏
  • 举报
回复
js数组是引用传递,你调用一次就改变了数组对象,所以要用concat方法复制一份进行更改,才不会改到原数组
流云望风 2017-10-27
  • 打赏
  • 举报
回复
好吧,实际上,是处理json文件时异步加载所致,console.log也是一个异步加载的函数,会输出的是最后的数组的值,而不是当前的值,但是由于前面json的数据没有加载完成就被我拿去调用来更新数组,导致数组里根本没有变化,所以输出之后还是初始值,把更新函数写在ajax的回调函数里就可以了。
流云望风 2017-10-27
  • 打赏
  • 举报
回复
引用 1 楼 u011705725 的回复:
js数组是引用传递,你调用一次就改变了数组对象,所以要用concat方法复制一份进行更改,才不会改到原数组
我就是想改原数组,但是就是改不了,反倒是初始化的地方把数组改了,后续的改动全没了。
流云望风 2017-10-27
  • 打赏
  • 举报
回复
引用 3 楼 qq_29594393 的回复:
数组和对象都是引用类型 , var a = [1,2]; var b = a; a.push(3); console.log(b);[1,2,3] 也就是赋值并没有复制数组,而是引用同一个数组.对象也是一样. 那么就是如何深度复制数组和对象的问题了.最常用的方法就是遍历数组.一一赋值,如果是引用类型就是递归遍历. 字符串也是引用类型,但是字符串是不可修改的,每次修改都是新建新的字符串,所以没有这个问题. 不理解的,可以说明
直接针对数组里的某个元素进行赋值,难道不能把他保存下来嘛。因为我实际想要达到的效果是让他的值变成我修改后的样子,然而运行出来数组里的值还是初始化的模样,这让我不知道怎么处理。

87,902

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧