json对象赋值给另一个json对象的问题

for循环 改变dispatch对象中的某个字段的值,再放到allTask这个对象中
key值改变了 但是dispatch这个是最后一次的才赋值进去,没有达到预期的值
这个是什么原理?怎么解决

源码:
clipboard.png

运行结果:

clipboard.png

预期的结果是:

clipboard.png

阅读 9.2k
5 个回答

allTask['123456-0'] allTask['123456-1'] allTask['123456-2'] dispatch
这四个指向的是同一个对象,所以输出时,以最后一次修改为准。你可以在for循环的最后加上dispatch={},使每次循环时,都new一个新的对象出来

dispatch 用的是同一个变量了,所以循环里后面的赋值把前面的覆盖了。

可以在循环里面定义dispatch 变量。

把for循环里面的var改成let

dispatc,可以理解成其他语言中的类的实例,你无论怎么赋值,在都还是它

for循环第一行添加dispatch = {};,没有这一句你引用的对象就是同一个,allTask里既然都是同一个对象,当这个对象变化了,数组中所有元素(其实是一个相同的元素)就都变化了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题