Javascript 从多维数组中获取随机数
在javascript函数中,我有一个多维数组,如下所示。 如何从myObject[1]中获取随机数Javascript 从多维数组中获取随机数,javascript,multidimensional-array,Javascript,Multidimensional Array,在javascript函数中,我有一个多维数组,如下所示。 如何从myObject[1]中获取随机数 var myObject= [ [ [2,3], [5,9], [4,7] ], [ [1,3], [5,8] ], [ [1,2], [5,7], [6,9] ], [ [5,6], [1,7] ], [ [4,6], [1,9], [3,7],[2,8] ], [ [4,5], [3,9] ], [ [8,9], [3,5], [1,4] ], [ [7,9], [2,5] ], [
var myObject= [
[ [2,3], [5,9], [4,7] ],
[ [1,3], [5,8] ],
[ [1,2], [5,7], [6,9] ],
[ [5,6], [1,7] ],
[ [4,6], [1,9], [3,7],[2,8] ],
[ [4,5], [3,9] ],
[ [8,9], [3,5], [1,4] ],
[ [7,9], [2,5] ],
[ [7,8], [1,5], [3,6] ]
]) 这可能有效:
var randomNumber = getRandom(myObject[1]);
function getRandom(arr) {
var random1 = Math.floor((Math.random() * (arr.length)));
return arr[random1][Math.floor((Math.random() * (arr[random1].length)))];
}
下面是一个递归函数,它应该可以做到这一点
var multiDimNumberPicker = function(inputArray){
var randomItem;
//if item is an array
if( Object.prototype.toString.call( inputArray ) === '[object Array]' ) {
//pick a random item to return
randomItem = inputArray[Math.floor(Math.random()*inputArray.length)];
console.log("is still array " + randomItem);
//process selected item
return multiDimNumberPicker(randomItem);
}else{
console.log("not an array " + inputArray);
return inputArray;
}
};
//Generate a random number from myObject[1];
var x = multiDimNumberPicker(myObject[1]);
console.log(x);
//Generate a random number from myObject;
var y = multiDimNumberPicker(myObject);
console.log(y);
示例jsiddle从0到2选择一个随机数
i
,从0到1选择一个随机数j
。然后获取myObject[1][i][j]
。这是一组非常奇怪的嵌套数组。最外面的数组(如果是数组)以索引1
开始,如果是数组,长度将产生误导。但是所有其他的都是从索引0
开始的,它们肯定是数组,它们的长度将是准确的。我会保持一致,并且在整个过程中使用更具表现力的文字符号,而不仅仅是部分:你被困在哪里?您需要哪一位的帮助?您的意思是希望从myObject[1]
中获得一个随机数吗?如果是这样的话,你为什么要告诉我们关于myObject[2]
,myObject[3]
,等等?T.J Crowder谢谢你的建议。实际上我只是在做一个小的tic-toc javascript游戏作为练习。当用户选择占据第一个位置时,将从myObject[1]数组中响应一个位置。警告!非常感谢您的帮助,但我得到了“1”作为随机数。实际上我的数组中没有“1”。