收藏
回答

没执行修改的数组数据被修改?

我从数据库获取到数组赋值给两个不同的数组question[]和errquestion[],从前台点击,会修改question数组中的值,但是errquestion[]没做修改,console.log打印出来两个都被修改了,,,

var errquestion = [];
Page({
  data: {
    question: [],
    //errquestion: [],
    tags0,
    answer'',
    choose:[],
    ansArr:[],

  },
onLoadfunction(options{
    db.collection('xxx').get({
      successres => {
        this.setData({
                  question: res.data[0].question,
                })
        for (let i = 0;i < this.data.question.length;i++){
          errquestion.push(res.data[0].question[i]);
        }
}
  choosefunction(res{
      let chooseArr = this.data.question[mTag].options;
      let nowChecked = 'question[' + mTag + '].options'//setData改变部分数据
      if (chooseArr[index].checked) return//选择当前已经选择的返回
      chooseArr.forEach(item => { //遍历选项,将其他选项设置为false(单选)
          item.checked = false;
      })
      chooseArr[index].checked = true;
            
      this.setData({
           [nowChecked]: chooseArr,
      })
      console.log(errquestion[mTag]);
}
最后一次编辑于  2020-06-11
回答关注问题邀请回答
收藏

2 个回答

  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2020-06-11
    就是这样的, 都会被改变
    var data = [{c:1,d:2}]
    var a = data, b = data
    a[0].c = 5
    console.log('a :', a)  // => a : [{c:5,d:2}]
    console.log('b :', b)  // => b : [{c:5,d:2}]
    console.log('data :', data)  // => data : [{c:5,d:2}]
    
    想不被改变就使用JSON.stringify 和 JSON.parse
    var data = [{c:1,d:2}]
    var a = JSON.parse(JSON.stringify(data)),
    b = JSON.parse(JSON.stringify(data))
    a[0].c = 5
    console.log('a :', a)  // => a : [{c:5,d:2}]
    console.log('b :', b)  // => b : [{c:1,d:2}]
    console.log('data :', data)  // => data : [{c:1,d:2}]
    
    
    

    若认为该回答有用,给回答者点个[ 有用 ],让答案帮助更多的人

    2020-06-11
    有用 2
    回复 1
    • 玉珏
      玉珏
      2020-06-12
      感谢回答,已解决
      2020-06-12
      回复
  • Mu
    Mu
    2020-06-11

    “数据库获取到数组赋值给两个不同的数组question[]和errquestion[]”


    这部分代码贴一下

    2020-06-11
    有用
    回复 7
    • 玉珏
      玉珏
      2020-06-11
      贴了呀,第一个setdata和第一个for循环就是,抱歉 ,第一次上传代码东调颜色,,,
      2020-06-11
      回复
    • Mu
      Mu
      2020-06-11回复玉珏
      ??? 应该之前还有吧 没声明errquestion就能push了?
      2020-06-11
      回复
    • 玉珏
      玉珏
      2020-06-11回复Mu
      贴了,大概就是这样了
      2020-06-11
      回复
    • Mu
      Mu
      2020-06-11回复玉珏
      concat()
      2020-06-11
      回复
    • 玉珏
      玉珏
      2020-06-12
      感谢回答,已解决,不过我两个赋值后面都加了concat(),还是不行,用了“有脾气的酸奶”的方式解决的
      2020-06-12
      回复
    查看更多(2)
登录 后发表内容
问题标签