JS二维数组fill的问题,含js分段数据的小算法

执行这段代码,你会发现修改了[0][0]的值,[1][0]也发生了改变

   let newArr = new Array(arr.length).fill(new Array(aNum).fill([]))
   newArr[0][0] = [12345]
   console.log('newArr', newArr)

源代码,分数据的小算法

if (arr.length) {
        let _Data = JSON.parse(JSON.stringify(data[i]))
        let newArr = new Array(arr.length).fill(new Array(aNum).fill([]))
        let _num = 0
        let _index = arr[_num]

        for (let j = 0; j < _Data.length; j++) {
          let iData = JSON.parse(JSON.stringify(_Data[j]))
          _index = _index - iData.length
          if (_index <= 0) {
            const newData = iData.splice(_index)
            newArr[_num][j] = iData
            _num++
            _index = arr[_num]-arr[_num-1]
            newArr[_num][j] = newData
          } else {
            newArr[_num][j] = iData
          }
        }
        resArr.push(...newArr)
      } else {
        resArr.push(data)
      }

应该改成这样,引用传递的问题

let newArr = new Array(arr.length);

for (let i = 0; i < newArr.length; i++) {
  newArr[i] = new Array(aNum).fill([]);
}

有点感慨,突然发现自己也能写一些小算法了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值