问题背景
在写39. 组合总和 - 力扣(LeetCode)时,涉及到了向二维数组中追加一位数组的操作
最初我是这样写的:
resArr.push(tempArr)
其中tempArr
是待追加的一维数组,resArr
则是二维数组
这样的结果是:最终得到的resArr
中都是空的一维数组,如[[], [], []]
原因:上面的写法是将tempArr
的引用追加到resArr
中
在后续操作中,如果对tempArr
进行修改(本题是将tempArr
中所有元素弹出),那么resArr
中的tempArr
引用也会被改变
解决:向resArr
中压入新数组而不是引用
压入tempArr.slice()
。如果括号中不提供任何参数,slice
方法会复制原数组中的所有元素到一个新数组,完结。
resArr.push(tempArr.slice())