当我使用Array.fill填充多维数组时,我在推送到其中一个数组时会遇到奇怪的行为:
var arr = Array(2).fill([]);
arr[0].push(5);
console.log(arr);
//=> prints [[5], [5]]
Run Code Online (Sandbox Code Playgroud)
fill 本质上是这样做的:
var content = [];
for (var i = 0; i < 2; i += 1) {
arr[i] = content;
}
Run Code Online (Sandbox Code Playgroud)
因此,您的数组将引用您fill在每个属性中传递的数组.