簡體   English   中英

在JavaScript中處理數組元素

[英]'Dealing' array elements in Javascript

我有四個數組(array1..4)每個包含四個字符串,例如

var array1 = ['array1item1', 'array1item2', 'array1item3', 'array1item4']

我也有四個空數組(finalarray1..4),在其中我要從四個原始數組中分別彈出()一個隨機選擇的項目,因此我將有四個像這樣的數組

finalarray1 = ['array1item3', 'array2item2', 'array3item2','array4item1']

如何在javascript中完成?

如果您希望最終數組是唯一的( 初始數組中的每個元素在所有最終數組中僅使用一次 ),請使用

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

演示在http://jsfiddle.net/w4nWU/


我沒有使用多個變量,而是使用了兩個包含初始和最終數組的數組。

上面的方法將不管您擁有的數組數量和數組中的元素數量( 假定它們都相等 )而起作用。

一種方式(為方便起見將4個輸出數組存儲在另一個數組中,破壞了傳遞的輸入)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM