为何我给arr1[1]赋值后,再给arr1[2]赋值时,arr1[1]的值就丢失了?

为何我给arr1[1]赋值后,再给arr1[2]赋值时,arr1[1]的值就丢失了?还有个问题。我如何把这些数组组合成一个数组?

img

bb8(name, e) {
                var arr1 = new Array(this.a5.length) //按照数组的总数量定义一个空的数组
                console.log('定义空数组的总数量为:', arr1.length)
                var arr2 = new Array()
                console.log('传过来的值:', name, e.detail.value)
                console.log('开始给arr1['+[name+1]+']赋值')
                arr1[name + 1]= e.detail.value
                console.log('打印arr1[1]和arr[2]的值:',arr1[1],arr1[2])
                // 可以根据需求将选中的值保存起来或进行其他操作
            },

参考GPT和自己的思路:

根据您提供的代码,我猜测您的arr1数组是在bb8函数内部定义的,那么每次调用bb8函数时,arr1数组都会被重新初始化为空数组。因此,当您给arr1[1]赋值后,再给arr1[2]赋值时,arr1[1]的值就丢失了,因为arr1数组被重新初始化了。

如果您想保留之前的值,可以将arr1数组定义在bb8函数外部,或者通过将之前的值复制到新数组中来实现。

要将这些数组组合成一个数组,您可以使用JavaScript中的concat()方法。例如,您可以将arr1和arr2数组组合成一个新数组,如下所示:

var arr3 = arr1.concat(arr2);

这将返回一个新数组arr3,其中包含了arr1和arr2数组的所有元素。请注意,concat()方法不会修改原始数组。

[name+1]
这里写错了吧

你每次都重新定义的arr1啊,兄弟
arr1是函数内定义的变量,每次都是申请新的,所以第二次跟第一次毫无关系,自然第二次arr1[2]有值,但arr1[1]没有值啊

参考GPT和自己的思路:

根据你提供的代码,我们可以看出问题出在这里:arr1[name + 1]= e.detail.value 。这段代码是将传入的值 e.detail.value 赋值给 arr1 数组的索引为 name+1 的位置。然而,因为在定义 arr1 数组时没有给定默认值,所以其所有元素的值都为 undefined 。在给 arr1[1] 赋值后,你又给了 arr1[2] 赋值,这意味着 arr1[1] 的原有值被覆盖了。

如果你想保存所有的值,可以将所有的值存到一个二维数组中,然后再将其转化为一个一维数组。具体的代码如下:

bb8(name, e) {
  var arr1 = new Array(this.a5.length) //按照数组的总数量定义一个空的数组
  console.log('定义空数组的总数量为:', arr1.length)
  var arr2 = new Array()
  console.log('传过来的值:', name, e.detail.value)
  console.log('开始给arr1['+[name+1]+']赋值')
  if (!Array.isArray(this.a5[name])) {
    this.a5[name] = [];
  }
  this.a5[name][name + 1] = e.detail.value;
  arr1 = [].concat(...this.a5); // 将二维数组转化为一维数组
  console.log('打印arr1[1]和arr[2]的值:', arr1[1], arr1[2])
  // 可以根据需求将选中的值保存起来或进行其他操作
}

在这段代码中,我们使用了一个二维数组来保存数据,然后用 concat 方法将其转化成一维数组 arr1 。这样就可以保留所有的数据了。