new Array() with fill()

因为题目需要建立一个一定长度的2维数组,数组中的每一项都是一个新的数组。
然后就想偷一个懒,用new Array() 和 fill() 实现

// foo.ts
 module.exports = (s: string) => {
   const len = s.length,
            arr = new Array(len);
   arr.fill([])
   return arr
}

// boo.ts
import foo from './foo'
const a = foo("new")
console.log(a) // [[],[],[]]

看上去打印的值是不是很完美。结果在我后续的操作就出现了问题,在赋值的时候就是讲填充的数组全部赋值。

// boo.ts
...
a[0][0] = 1
console.log(a) // [[1],[1],[1]]

具体原因是因为所有的2维数组都是一个引用地址,修改的所有的数组都是同一个。想要避免这种问题,需要用循环赋值不同的引用地址的数组。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • # 数组部分 # 1.## array_chunk($arr, $size [, $preserve_key = ...
    clothTiger阅读 4,935评论 0 1
  • Ruby 数组(Array) Ruby 数组是任何对象的有序整数索引集合。数组中的每个元素都与一个索引相关,并可通...
    黑夜的眸阅读 4,761评论 0 0
  • 扩展运算符 含义 扩展运算符(spread)是三个点(...)。它好比 rest 参数的逆运算,将一个数组转为用逗...
    小挠许阅读 1,352评论 0 0
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 7,893评论 2 9
  • 先决条件 在阅读这个教程之前,你多少需要知道点python。如果你想从新回忆下,请看看Python Tutoria...
    舒map阅读 7,382评论 1 13