当前位置: 首页 > 知识库问答 >
问题:

前端 - js 第二次赋值为空?

闻人思聪
2023-05-16

代码如下:

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
期望每次提交 得到的值 是不同的,谢谢大佬们

共有2个答案

麹高义
2023-05-16

问题是你的第一个循环出问题了
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)

郎和志
2023-05-16
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
 类似资料:
  • newitems[0]是直接拿到了区县的值了,现在是点击了区县追加给给this.ruleForm.address,现在点了第一个是正常的,第二次点击会追加、第三次也是点也是会追加,这不是我想要的效果 想要的效果是 点了第一次的值,赋给this.ruleForm.address,点了第二次就把第一次的值替换,第三次替换上一次的值,大佬们这个 要怎么弄呢?

  • 楼主是第一次面试,在boss上随便海投了几十家公司,收到了几家的笔试邀请,做了其中一家的笔试(不知名小公司),时长1h30min,运气好过了,之后开始约面试 一面:1h 1.自我介绍。面试官:你现在大二是吗,这么急就出来找实习啊。我:呵呵,是啊找实习要趁早 2.get和post的区别 3.缓存,说说强缓存和协商缓存 4.cookie和webstorage的区别(这个我老熟了) 5.项目相关 6.怎

  • 对同一变量多次赋值在C++里是合法的,这一点之前并没有多说。第二次赋值的效果是用新值替换掉旧值。 int fred = 5; cout << fred; fred = 7; cout << fred; 这段代码输出57,因为第一次打印fred时,其值是5;第二次打印时其值为7。 这种多次赋值的机制正是我把变量形容为值的容器的原因。在为变量赋值时,修改的是容器里的内容,如图所示: 当存在对同一变量

  • 美团第二次一面(岗位:web前端) 简要介绍一下,上次运维把我挂了,然后前端,后端都把我捞了起来,因为前端先打的电话,先约的前端,后端知道我约前端了,就没消息了 先说结果:又被感谢信了(意料之中吧😂) 这次面的时间比较长大概一个h,说过程吧 首先就是基础,也就是八股吧,涉及到的点有 1.操作系统,内存分段分页机制 2.计算机网络:三次握手,延申了一下,第三次包丢失了咋办 dns解析过程 3.设计

  • 一、总结 虽然很多很常见的题没答出来,特别是一个手写promise.all()脑袋一片空白,叫面试官帮忙写了个开头,结果还是写不出来,也是比较尴尬,但相比第一次好很多了,至少没有第一次那样想逃。。。 不过也是服气自己,自己项目相关的iframe,跨源通信等竟然没有准备,白送的几个题没有把握住。 再说一下面试官小姐姐,可能也是由于面试官人好,没有压力,我才能好多答不出也没有想着逃跑的(当然第一次那个