js 第二次赋值为空?

头像
摇摆123
    3516122
    广西南宁市西乡塘区

    代码如下:

    methods: {
        submit(){
    
            this.tableData.forEach(sub => {
              sampleProcessList = sub.sampleProcessInfo.sampleProcessList
            })
    
          let sampleProcessListss = JSON.parse(JSON.stringify(sampleProcessList))
          sampleProcessListss.find(element => {
            if (element.id === this.input.selectSampleProcess) {
              this.processName = element.processName
            }
          })
          const idList = this.ids.map(i => i)
    
          this.tableData.forEach(v => {
            if (idList.includes(v.id)) {
              v.processName = this.processName
            }
          })
          console.log(this.processName);
          }
      }

    问题如下
    ddde046c2e1a1dc75cb09c5d9b3bc9f.png
    期望每次提交 得到的值 是不同的,谢谢大佬们

    阅读 1.7k
    2 个回答
    this.tableData.forEach(sub => {
      sampleProcessList = sub.sampleProcessInfo.sampleProcessList
    })

    等价于

    sampleProcessList = this.tableData[this.tableData.length - 1]?.sampleProcessInfo.sampleProcessList

    let sampleProcessListss = JSON.parse(JSON.stringify(sampleProcessList))
      sampleProcessListss.find(element => {
        if (element.id === this.input.selectSampleProcess) {
          this.processName = element.processName
        }
      })

    等价于

    this.processName = sampleProcessList.find(v=>v.id === this.input.selectSampleProcess)?.processName

          const idList = this.ids.map(i => i)
    
          this.tableData.forEach(v => {
            if (idList.includes(v.id)) {
              v.processName = this.processName
            }
          })
          console.log(this.processName);
          }

    等价于没写,毕竟没有 this.processName 赋值


    最后就看前两句就行了,

    // 获取表格中最后一行的 sampleProcessInfo.sampleProcessList
    sampleProcessList = this.tableData[this.tableData.length - 1]?.sampleProcessInfo.sampleProcessList
    
    // 从 sampleProcessList 找到和 selectSampleProcess 的第一条数据的 processName
    this.processName = sampleProcessList.find(v=>v.id === this.input.selectSampleProcess)?.processName

    问题是你的第一个循环出问题了
    this.tableData.forEach(sub => {

    sampleProcessList = sub.sampleProcessInfo.sampleProcessList

    })
    这个不是把tableData中所有元素的sub.sampleProcessInfo.sampleProcessList是对象,你需要赋值给sampleProcessList,你现在的处理逻辑是循环过程中,是每个都会重新赋值一次,直到循环结束,你sampleProcessList拿到数据其实就是tableData的最后一个元素的数据,如果所有的sub.sampleProcessInfo.sampleProcessList是对象,你需要sampleProcessList.push(sub.sampleProcessInfo.sampleProcessList),如果是数组,sampleProcessList=sampleProcessList.concat(sub.sampleProcessInfo.sampleProcessList)

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