One way (stores the 4 output arrays in another array for convenience, destroys the passed inputs)
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