Javascript Array.push正受到post-Array.unshift调用的影响

Javascript Array.push正受到post-Array.unshift调用的影响,javascript,Javascript,我将一个数组推到第二个数组,然后取消移动并弹出第一个数组,但由于某种原因,这会影响第二个数组。为什么会这样?我希望resultsList等于[0,1,0,0],但结果是[0,0,1,0] var pattern = [0,1,0,0]; var resultsList = []; resultsList.push( pattern ); pattern.unshift( pattern.pop() ); console.log( resultsList ); 下面是一个JSFIDLE,

我将一个数组推到第二个数组,然后取消移动并弹出第一个数组,但由于某种原因,这会影响第二个数组。为什么会这样?我希望resultsList等于
[0,1,0,0]
,但结果是
[0,0,1,0]

var pattern = [0,1,0,0];   
var resultsList = [];

resultsList.push( pattern );
pattern.unshift( pattern.pop() );
console.log( resultsList );
下面是一个JSFIDLE,使其更易于理解


您需要复制数组,否则它将通过引用传递

要复制阵列,请使用:

pattern.slice(0)
pattern.pop()
删除并返回
pattern
中的最后一项

pattern.unshift(item)
pattern
的开头添加
item

因此,预计产出为:

[   0, 1, 0, 0 ]
  Λ          |
  |__________|

resultsList不是
[0,1,0,0]
,它是一个长度为1的数组,包含(可变的)
模式。你想要
var resultsList=pattern.slice()
?因为数组只是JavaScript中的指针。所以,无论我改变模式多久,它都会在resultsList中更新。