';交易';Javascript中的数组元素
我有四个数组(array1..4),每个数组包含四个字符串,例如';交易';Javascript中的数组元素,javascript,arrays,Javascript,Arrays,我有四个数组(array1..4),每个数组包含四个字符串,例如 var array1=['array1item1','array1item2','array1item3','array1item4'] 我还有四个空数组(finalarray1..4),其中我想从四个原始数组中的每个数组中弹出一个随机选择的项,所以我有四个这样的数组 finalarray1=['array1item3'、'array2item2'、'array3item2'、'array4item1'] 这是如何在javascr
var array1=['array1item1','array1item2','array1item3','array1item4']
我还有四个空数组(finalarray1..4),其中我想从四个原始数组中的每个数组中弹出一个随机选择的项,所以我有四个这样的数组
finalarray1=['array1item3'、'array2item2'、'array3item2'、'array4item1']
这是如何在javascript中实现的?一种方式(为了方便起见,将4个输出数组存储在另一个数组中,销毁传递的输入)
var array1=['array1item1','array1item2','array1item3','array1item4']
var array2=['array2item1','array2item2','array2item3','array2item4']
var array3=['array3item1','array3item2','array3item3','array3item4']
变量array4=['array4item1'、'array4item2'、'array4item3'、'array4item4']
最终光线=混洗(阵列1、阵列2、阵列3、阵列4);
函数shuffle(){
var指数,结果=[];
for(变量输出=0;输出>阵列1项目2、阵列2项目1、阵列3项目2、阵列4项目4
>>阵列1项目4、阵列2项目4、阵列3项目4、阵列4项目2
>>阵列1项目1、阵列2项目3、阵列3项目3、阵列4项目1
>>阵列1项目3、阵列2项目2、阵列3项目1、阵列4项目3
如果希望最终数组是唯一的(初始数组中的每个元素在所有最终数组中仅使用一次),请使用
演示
我没有使用多个变量,而是使用了两个数组来保存初始数组和最终数组
无论数组的数量和数组中元素的数量如何(假设它们的长度相等),上述方法都会起作用。每个输出数组是否需要唯一的元素?是的,每个初始数组需要一个元素才能创建最终的数组array@raphael_turtle,很乐意帮忙:)
var array1 = ['array1item1', 'array1item2', 'array1item3', 'array1item4']
var array2 = ['array2item1', 'array2item2', 'array2item3', 'array2item4']
var array3 = ['array3item1', 'array3item2', 'array3item3', 'array3item4']
var array4 = ['array4item1', 'array4item2', 'array4item3', 'array4item4']
finalarrays = shuffle(array1, array2, array3, array4);
function shuffle() {
var index, results = [];
for (var output = 0; output < arguments.length; output++) {
results[output] = [];
for (var input = 0; input < arguments.length; input++) {
results[output].push(arguments[input].splice(Math.floor(Math.random() * arguments[input].length), 1));
}
}
return results;
}
print( finalarrays[0].join() )
print( finalarrays[1].join() )
print( finalarrays[2].join() )
print( finalarrays[3].join() )
>> array1item2,array2item1,array3item2,array4item4
>> array1item4,array2item4,array3item4,array4item2
>> array1item1,array2item3,array3item3,array4item1
>> array1item3,array2item2,array3item1,array4item3
function iRandomUpTo(upto){
return Math.floor( Math.random()*(upto) );
}
var initialArrays = [
['array1item1','array1item2','array1item3','array1item4'],
['array2item1','array2item2','array2item3','array2item4'],
['array3item1','array3item2','array3item3','array3item4'],
['array4item1','array4item2','array4item3','array4item4']
];
var finalArrays = [];
for(arrayIndex in initialArrays){
var newArray = finalArrays[arrayIndex] = [];
for(idx in initialArrays){
var singleArray = initialArrays[ idx ];
newArray.push( singleArray.splice( iRandomUpTo( singleArray.length ), 1 )[0] );
}
}