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

时间:2015-02-15 22:51:02

标签: 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 );

这是一个让它更容易理解的JSFiddle。

http://jsfiddle.net/ce6us1jk/3/

2 个答案:

答案 0 :(得分:1)

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

要复制数组,请使用:

pattern.slice(0)

答案 1 :(得分:1)

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

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

所以输出是预期的:

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