以下是我正在使用的代码
这个想法是将一个单词中的字母顺序混洗,然后将该单词的第一个字母与第一个字母最初的字母进行比较。但变量charscopy也变得很糟糕,我不知道为什么?
function shuffle(o){ //v1.0
for(var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
return o;
};
var chars = 'hello'.split('')
var charcopy = chars;
alert(chars[0]);
alert(charcopy[0]);
shuffle(chars);
alert(chars[0]);
alert(charcopy[0]);
答案 0 :(得分:0)
由于charcopy
不是副本,因此它是对原始内容的引用。您需要使用slice()
var charcopy = chars.slice(0);
答案 1 :(得分:0)
要复制chars
,您不能只指定var charcopy = chars
,因为它会将chars
的引用分配给charcopy
。解决此问题的常用方法是使用.slice
方法:
var charcopy = chars.slice();
答案 2 :(得分:0)
由于这一行var charcopy = chars;
。
JavaScript设置对相同对象的新引用,Array#slice或重复split
。
var charcopy = chars.slice();
或
var charcopy = "hello".split('');