Javascript/React-Native中奇怪的数组行为

Javascript/React-Native中奇怪的数组行为,javascript,arrays,react-native,Javascript,Arrays,React Native,我是ReactNative/Javascript新手。我注意到的一件奇怪的事情是,如果我从参数ex:[1,0,1,-1]中得到一个数组,并将其分配给另一个变量和console.log,我将得到一个无限的数组内容 myFunc = (array) => { console.log("ARRAY:"); console.log(array); var result = array; console.log("RESULT:"); console.log(result); }

我是ReactNative/Javascript新手。我注意到的一件奇怪的事情是,如果我从参数ex:[1,0,1,-1]中得到一个数组,并将其分配给另一个变量和console.log,我将得到一个无限的数组内容

myFunc = (array) => {
  console.log("ARRAY:");
  console.log(array);
  var result = array;
  console.log("RESULT:");
  console.log(result);
}
在iOS中生成控制台日志:

ARRAY:
[ 1, 0, 1, -1 ]
RESULT:
[ 1,
  0,
  1,
  -1,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ,
  ... 100 more rows
  ,
  [] ]
为什么会这样?如何正确地将数组内容从一个变量分配到另一个变量

请注意,只有从参数获取数据时,才会发生这种情况。如果我随意地使用var array=[1,0,1,-1]并将其分配给另一个变量,那么这没有问题。

我试图重现,但结果与预期一致

没有更多信息进行调试和调查。我认为最大的罪魁祸首可能是OP复制阵列的方式

通过做

var result = array;
若数组值以某种方式更改,所有更改也将反映在结果中

你可以尝试使用


这个答案过度解释了为什么slice可以防止上述问题。

我试图回答这个问题,以及如何正确地将数组内容从一个变量分配到另一个变量?。哦,嘿,等等,这实际上给了我正确的[1,0,1,-1]数据!为什么会这样???@Zendy如果这是正确的答案,请解释为什么,因为就在现在,这看起来像黑魔法!我尝试了其他一些数组分配,甚至是数组中的数组分配,但仍然有效。但是读取切片信息时,它会返回原始切片的浅拷贝。如果我不提供任何参数,我不知道删除那些额外的nil元素是否有效。@ChenLiYong我用一些调查结果更新了答案。看看这是否是你的问题。根据不变性,创建一个新对象,而不是重新分配一个:const result=[…array]请发布一个说明问题的示例。请我的假设基于非常少的信息:数组在别处发生变异数组[200]=[],并且您没有解释控制台输出…@jonaswillms这是函数之后执行的第一个代码。创建此函数是为了用最少的代码重现此问题。所示代码不会生成日志输出。
var result = array.slice();