JS forEach 多层嵌套后数据无法更新到对象中

278 阅读1分钟

(一)需求

新增对象和编辑对象,对于业务场景下面的属性的值的默认值要区分,设置不同的默认值。

(二)实现

1、forEach 更新数据失败了

一开始尝试,是在获取异步请求后,直接进行数据处理的,但是失败了,在另一边选择不同的业务场景下,一直无法更新。

  • 复杂对象数据的深拷贝,试过了不行
  • nextTick到下微任务异步队列,试过了不行
  • setTimeout到下个宏任务异步队列,试过了还行不行

心情略崩溃,就是不行;

2、进一步排查

发现是在选业务场景后,数据会有重新赋值的情况; 而选择重新赋值使用的旧有的对象。 虽然到现在还是不大明白,为什么,数据渲染后,还是没有渲染到原始的对象中,这里先记录下。之后再补充。

this.toolsList.forEach(function (item) {
  item.checked= true
  if (_this.newState) {
    if (item.tool_name === 'other') {
      const attributes = item.attributes
      attributes.forEach((attr) => {
        if (attr.name === 'edit_object_model') {
          console.log('attr2', attr)
          attr.value = '10'
        }
      })
    }
  }
})

写在最后的话

学习路上,常常会懈怠

《有想学技术需要监督的同学嘛~》 mp.weixin.qq.com/s/FyuddlwRY…