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

时间:2019-04-16 08:05:49

标签: javascript arrays react-native

我是ReactNative / Java的新手。我注意到的一件奇怪的事情是,如果我有一个来自参数(例如:[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]并将其分配给另一个变量,那就没问题了。

1 个答案:

答案 0 :(得分:-4)

我尝试重现this,但结果符合预期。

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

这样做

var result = array;

如果array的值有所更改,所有更改也将反映在result中。 (example here

您可以尝试使用slice()

var result = array.slice();

这个对here的回答解释了很多有关slice()阻止上述问题的原因。