因?yàn)轭}目需要建立一個(gè)一定長度的2維數(shù)組届搁,數(shù)組中的每一項(xiàng)都是一個(gè)新的數(shù)組氢橙。
然后就想偷一個(gè)懶绅这,用new Array() 和 fill() 實(shí)現(xiàn)
// 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) // [[],[],[]]
看上去打印的值是不是很完美纺蛆。結(jié)果在我后續(xù)的操作就出現(xiàn)了問題栗弟,在賦值的時(shí)候就是講填充的數(shù)組全部賦值污筷。
// boo.ts
...
a[0][0] = 1
console.log(a) // [[1],[1],[1]]
具體原因是因?yàn)樗械?維數(shù)組都是一個(gè)引用地址,修改的所有的數(shù)組都是同一個(gè)乍赫。想要避免這種問題瓣蛀,需要用循環(huán)賦值不同的引用地址的數(shù)組。