对于一个学校项目,我需要使用C进行游戏。但是,由于我更喜欢​​javascript + js可以提供简单的可视化实现,因此我决定在使用c之前先用js编写游戏,以使结构正确。这就是为什么我的代码如此奇怪地循环的原因。

现在,问题是我有一个switches[]数组,其中的开关被按下(1/0)。我想将此与另一个数组oldArray[]进行比较。现在,在进行比较时,由于某种原因它们都是相同的,而我只是找不到。这是jsfiddle.net上的完整示例。问题出在memory()函数中。该行无法正常工作:

if (switches[i] == 1 && oldArray[i] == 0 && guessedArray[i] == 8 && i != oldtouch) {...}


因为switches[]总是看起来等于oldArray[]

在小提琴中,按Start并单击一些按钮后检查consle输出。

最佳答案

它们是相等的,因为执行赋值语句oldArray = switches时,两个变量都指向内存中的同一基础对象。

要将所有值从一个数组复制到另一个数组,而不将它们指向同一对象,请执行oldArray = switches.slice(0)

请参阅此内容以进行进一步讨论:Copying array by value in JavaScript

09-07 14:53