我正在尝试创建一个接受两个参数并返回该点存储的值的结构。沿着岩石,纸张,剪刀的东西。
Rock(0) Paper(1) Scissors(2)
Rock(0) "Tie"(0,0) "Lose"(0,1) "Win"(0,2)
Paper(1) "Win"(1,0) "Tie"(1,1) "Lose"(1,2)
Scissors(2) "Lose"(2,0) "Win"(2,1) "Tie"(2,2)
有没有办法以一种可以扩展到更大的表的方式来做到这一点?
我最初的想法是创建一个3D数组的数组,存储[x,y,value]
,但循环遍历每个数组似乎对于较大的表来说是昂贵的。
const x = Math.floor(Math.random() * 3);
const y = Math.floor(Math.random() * 3);
const array = [
[0,0,'tie'], [0,1,'lose'], [0,2,'win'],
[1,0,'win'], [1,1,'tie'], [1,2,'lose'],
[2,0,'lose'], [2,1,'win'], [2,2,'tie']
];
const result = array.filter((point) => {
if (x === point[0] && y === point[1]){
return point
}
});
console.log(result[0][2]);
谢谢你提供的所有帮助!
看起来像2d阵列就是你所需要的:
const rock = 0
const paper = 1
const scissors = 2
const results = [
[
'tie',
'lose',
'win'
], [
'win',
'tie',
'lose'
], [
'lose',
'win',
'tie'
]
]
const result = results[rock][paper] // 'lose'