';交易';Javascript中的数组元素

';交易';Javascript中的数组元素,javascript,arrays,Javascript,Arrays,我有四个数组(array1..4),每个数组包含四个字符串,例如 var array1=['array1item1','array1item2','array1item3','array1item4'] 我还有四个空数组(finalarray1..4),其中我想从四个原始数组中的每个数组中弹出一个随机选择的项,所以我有四个这样的数组 finalarray1=['array1item3'、'array2item2'、'array3item2'、'array4item1'] 这是如何在javascr

我有四个数组(array1..4),每个数组包含四个字符串,例如

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] );
  }
}