随机逗号出现在数组 ReactJS

Posted

技术标签:

【中文标题】随机逗号出现在数组 ReactJS【英文标题】:Random commas appear in array ReactJS 【发布时间】:2019-06-04 02:45:39 【问题描述】:

我正在尝试在 ReactJS 中创建这个记忆游戏,并且我创建了一个数组,在其中添加了 4 个随机数。现在每次我按下玩游戏时,我都需要用 4 个随机数 0 到 3 填充数组,但我不断得到随机逗号,这些逗号在数组中无处不在。我对 React 还很陌生,因此不胜感激。

我尝试了不同的填充数组的方法,但逗号仍然出现。附言。 keepArray 在 for 循环之前被初始化。

for (let i = 0; i < 4; i++) 
      let rand = Math.floor(Math.random() * 4)
      keepArray = [...keepArray + rand]
      console.log(keepArray)
    

运行截图:http://prntscr.com/nx9sqg

【问题讨论】:

【参考方案1】:

解决方案:

替换:

keepArray = [...keepArray + rand]

与:

keepArray = [...keepArray, rand]


说明:

扩展运算符 (...) 实际上是“扩展”您的数组,这就是您需要逗号的原因。下面的示例可能有助于将其可视化:

// Let's start with a simple array:
var myArray = [1, 2, 3];

// Now, we add another element to it using spread:
var updatedArray = [...myArray, 4];

// Here, ...myArray is translated to [1, 2, 3]
// That means that the above could be read as:
var updatedArray = [1, 2, 3, 4];

参考:https://developer.mozilla.org/en-US/docs/Web/javascript/Reference/Operators/Spread_syntax


有关“+”行为的额外解释,请参阅 Pavan Bahuguni 的回答。

【讨论】:

我更新了答案以添加更好的解释。让我知道这是否有意义:) 我现在明白了。很棒的解释谢谢!我在 5 分钟内投票 :) 很高兴知道它有帮助!如果这解决了您的问题,请考虑接受它作为正确答案。祝你的项目好运!【参考方案2】:

上面的答案确实解决了问题,但行为的真正原因如下。

+ 运算符被重载以用于数字加法和字符串连接的目的。当 + 接收到任一操作数的对象(在您的情况下包括数组)时,它首先调用该值的 ToPrimitive 抽象操作,然后调用带有数字上下文提示的 [[DefaultValue]] 算法。哪个实习生在数组上调用 toString 方法。

var val = [1,2,3] + 1;
console.log(val); // "1,2,31"

然后你试图像这样在一个数组中传播那个字符串,

var arr = [...val];
console.log(arr); // ["1", ",", "2", ",", "3", "1"]

这就是您看到这些逗号的真正原因。

【讨论】:

感谢您更深入的解释!确实有帮助 很好的解释!我将参考您的答案进行更新。

以上是关于随机逗号出现在数组 ReactJS的主要内容,如果未能解决你的问题,请参考以下文章

2D 数组查询 - 尽管使用了 join(),但输出中出现意外逗号;

C++ 带逗号输入数组(大厂笔试输入出现多次)

C++ 带逗号输入数组(大厂笔试输入出现多次)

C++ 带逗号输入数组(大厂笔试输入出现多次)

Json数组方法随机函数数组去重

使用逗号连接Java数组?