Javascript Knuth以相同的方式洗牌多个数组
我正在使用knuth随机洗牌来随机化数组。我希望能够添加另一个数组,并以同样的方式使其随机化。我以前曾想过在字符串中分隔数组,例如Javascript Knuth以相同的方式洗牌多个数组,javascript,arrays,shuffle,knuth,Javascript,Arrays,Shuffle,Knuth,我正在使用knuth随机洗牌来随机化数组。我希望能够添加另一个数组,并以同样的方式使其随机化。我以前曾想过在字符串中分隔数组,例如['A | 1 | I,B | 2 | II,C | 3 | III,D | 4 | IV']等 在stackoverflow上,我阅读了一些内容,但我不知道如何安排knuth洗牌 这是我目前正在使用的JS,用于从第一个数组中获取字符串,并从上面的链接中获取其他代码 Array.prototype.knuthShuffle = function() {
['A | 1 | I,B | 2 | II,C | 3 | III,D | 4 | IV']
等
在stackoverflow上,我阅读了一些内容,但我不知道如何安排knuth洗牌
这是我目前正在使用的JS,用于从第一个数组中获取字符串,并从上面的链接中获取其他代码
Array.prototype.knuthShuffle = function()
{
var i = this.length, j, temp;
while ( --i )
{
j = Math.floor( Math.random() * (i - 1) );
temp = this[i];
this[i] = this[j];
this[j] = temp;
}
};
var array_chromatic = ['A', 'A%23', 'Bb', 'B', 'C', 'C%23', 'Db', 'D', 'D%23', 'Eb', 'E', 'F', 'F%23', 'Gb', 'G', 'G%23', 'Ab'],
array_chronumb = ['Aa', 'A%23a', 'Bbb', 'Bb', 'Cc', 'C%23c', 'Dbd', 'Dd', 'D%23d', 'Ebe', 'Ee', 'Ff', 'F%23f', 'Gbg', 'Gg', 'G%23g', 'Aba'];
function renderKnuth()
{
array_chromatic.knuthShuffle();
array_chronumb.knuthShuffle();
var audio = document.getElementById('sound');
audio.src = 'url-redacted' + array_chromatic[0] + '.mp3';
var str1 = array_chromatic[0]
str2 = str1.replace("%23", '#');
document.getElementById('knuth_data2').innerHTML = str2;// + array_accidental[0];
document.getElementById('knuth_data3').innerHTML = array_chronumb[0];
}
链接的功能正是您所需要的
function randomise(a, b)
{
var i = a.length, j, temp;
while ( --i )
{
j = Math.floor( Math.random() * (i - 1) );
temp = a[i];
a[i] = a[j];
a[j] = temp;
temp = b[i];
b[i] = b[j];
b[j] = temp;
}
};
var array_chromatic = ['A', 'A%23', 'Bb', 'B', 'C', 'C%23', 'Db', 'D', 'D%23', 'Eb', 'E', 'F', 'F%23', 'Gb', 'G', 'G%23', 'Ab'];
var array_chronumb = ['Aa', 'A%23a', 'Bbb', 'Bb', 'Cc', 'C%23c', 'Dbd', 'Dd', 'D%23d', 'Ebe', 'Ee', 'Ff', 'F%23f', 'Gbg', 'Gg', 'G%23g', 'Aba'];
randomise(array_chromatic, array_chronumb);
洗牌一个有序数字数组,然后通过使用洗牌数组的值作为其他数组的索引,将该数组的洗牌应用于其他数组的顺序
var index_array = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16];
index_array.knuthShuffle();
var array_chromatic_shuffled = [],
array_chronumb_shuffled = [];
for(var i=0; i<index_array.length; ++i) {
array_chromatic_shuffled[i] = array_chromatic[index_array[i]];
array_chronumb_shuffled[i] = array_chronumb[index_array[i]];
}
array_chromatic = array_chromatic_shuffled;
array_chronumb = array_chronumb_shuffled;
var指数_数组=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16];
索引_数组.knuthShuffle();
var数组_色度_混洗=[],
数组_chronumb_shuffled=[];
对于(var i=0;i