我在js中进行心理学实验。我有一个字符串数组,我替换其中两个字符串中的文本。数组根据我想要的参与者的输入而改变。所以我有原始数组Array1
,它包含一些占位符值,以及一个包含我希望参与者看到Array2
的值的重复数组。我使用.replace
输入新值。很奇怪(或者也许只是我对js的理解),使用Array2[n].replace('placeholder', 'new text')
替换两个数组中的占位符。这是一些复制问题的脚本(在Chrome中)。
Array1 = ['rhubarb', 'placeholder', 'rhubarb', 'rhubarb']
Array2 = Array1
Array2[1] = Array2[1].replace('placeholder', 'new text')
Array1
["rhubarb", "new text", "rhubarb", "rhubarb"]
使用Array2 = Array1.slice()
消除了这个问题,因此我猜Array2 = Array1
只指向Array1
而不是复制它。为什么Array2 = Array1
允许对Array2
进行修改以引导参考链,可以这么说呢?
我确定这是相当基本的,但我不是程序员。提前谢谢!
答案 0 :(得分:1)
问题实际上是两个数组指向相同的数据;我的意思是他们不包含单独的值。要复制旧数组的值,最好使用.slice
方法。看起来像这样
Array2 = Array1.slice()
Array2[1] = Array2[1].replace('placeholder', 'new text');
答案 1 :(得分:0)
javascript中的数组也是一个对象。对象被视为引用。基本上他们指向同一条数据。合乎逻辑的结果是,如果你修改一个,它会影响另一个。
如果要创建克隆(独立副本)以避免此类行为,您可能需要参考this question有关如何复制数组的信息。它有很多答案。