ECMA-262 具有具有.push()
方法的 Array 对象。您可以在第 15.4.4.7 节的ECMA 规范中自己查看。
要通过在每个数组的随机元素之间交替来合并两个数组,您可以这样做:
function mergeTwoRandom(arr1, arr2) {
function extractRandom(arr) {
var index = Math.floor(Math.random() * arr.length);
var result = arr[index];
// remove item from the array
arr.splice(index, 1);
return(result);
}
var result = [];
while (arr1.length || arr2.length) {
if (arr1.length) {
result.push(extractRandom(arr1));
}
if (arr2.length){
result.push(extractRandom(arr2));
}
}
return(result);
}
如果你想在没有 的情况下这样做.push()
,你可以这样做:
function mergeTwoRandom(arr1, arr2) {
function extractRandom(arr) {
var index = Math.floor(Math.random() * arr.length);
var result = arr[index];
// remove item from the array
arr.splice(index, 1);
return(result);
}
var result = [];
while (arr1.length || arr2.length) {
if (arr1.length) {
result[result.length] = extractRandom(arr1);
}
if (arr2.length){
result[result.length] = extractRandom(arr2);
}
}
return(result);
}
如果你也没有.splice()
,你可以这样做:
function mergeTwoRandom(arr1, arr2) {
function removeItem(arr, index) {
for (var i = index; i < arr.length - 1; i++) {
arr[i] = arr[i + 1];
}
arr.length = arr.length - 1;
}
function extractRandom(arr) {
var index = Math.floor(Math.random() * arr.length);
var result = arr[index];
// remove item from the array
removeItem(arr, index);
return(result);
}
var result = [];
while (arr1.length || arr2.length) {
if (arr1.length) {
result[result.length] = extractRandom(arr1);
}
if (arr2.length){
result[result.length] = extractRandom(arr2);
}
}
return(result);
}