我有以下内容,然后我想将数组转移到其原始状态,并将其发布到console.log。但是我对于采取什么方向感到有些迷失:
$(document).ready(function(){
var cards=new Array(
'clu01',
'clu02',
'clu03',
'clu04',
'clu05',
'clu06',
'clu07',
'clu08',
'clu09',
'clu10',
'clu11',
'clu12',
'clu13',
'dia01',
'dia02',
'dia03',
'dia04',
'dia05',
'dia06',
'dia07',
'dia08',
'dia09',
'dia10',
'dia11',
'dia12',
'dia13',
'hea01',
'hea02',
'hea03',
'hea04',
'hea05',
'hea06',
'hea07',
'hea08',
'hea09',
'hea10',
'hea11',
'hea12',
'hea13',
'spa01',
'spa02',
'spa03',
'spa04',
'spa05',
'spa06',
'spa07',
'spa08',
'spa09',
'spa10',
'spa11',
'spa12',
'spa13'
);
function Shuffle(o) {
for(var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
return o;
};
Shuffle(cards);
console.log(cards);
});
答案 0 :(得分:0)
如果原始数组按字母顺序排序,则可以执行sort()
cards.sort()
您还可以定义自定义排序功能:
cards.sort( function(a, b) {
// some logic to compare 2 values to see which goes first
// return 1 if a comes after b
// return -1 if a comes before b
// return 0 if they are the same (this usually means whichever came first will be first)
});
答案 1 :(得分:0)
我这样做的方式是有一个单独的索引数组,数组的长度相同。所以,例如
var cards = ['clu01', 'clu02','clu03'];
你创建
var indices = [0, 1, 2];
现在,当你进行随机播放时,你会比较原始数组,但是会改变indices数组。所以基本上,你正在改变数组中的位置,而不是元素本身。这样你就可以保持两者分离,并且可以随时访问这两种状态,而不需要太多开销。
要访问随机播放:
cards[indices[i]];
访问原文:
cards[i];
答案 2 :(得分:0)
由于时间和头痛你将要使用你的卡,你可能有两个数组,你的源“排序”数组,和你的洗牌数组。如果要对数组进行排序,只需使用源数组。当你想要改组一个数组时,你可以重新洗牌“洗牌”数组,或者制作一个源的副本并随意改组。
战争已经赢了,你已经可以洗牌了。
答案 3 :(得分:0)
var orig_cards = cards.slice(0);
Shuffle(cards);
console.log(cards);
cards = orig_cards;
console.log(cards);