【发布时间】:2015-07-12 08:08:01
【问题描述】:
这是我正在使用的随机播放功能:
function shuffle(o,l){
for(var j, x, i = l; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
return o;
}
我在这段代码中使用它来打乱一个变量,但不知何故它打乱了两个变量?
function generate() {
if (a = 1) {
var shuffled = $.data;
shuffle(shuffled,500);
} else if (a = 2) {
for (var i = 0; i < 500; i++) {
console.log($.data[i]);
}}
}
它打乱了'shuffled'变量,但不知何故也打乱了$.data,因此无论if采用哪种方式,它都会永久打乱。
【问题讨论】:
-
Array是通过引用传递的,因此您必须创建一个新数组,例如使用o =o.slice()来获得一个不会影响$.data的数组。 -
你的意思是这样的? var shuffle = new Array();洗牌 = $.data;如果是这样,那也不行。
-
我现在明白了你的意思,实际上确实有效。谢谢。
-
如果您认为这确实解决了问题,您应该接受答案,因此任何有相同问题的人都知道答案确实可以解决问题。
标签: javascript jquery shuffle