对于一个学校项目,我需要使用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