如何实现2参数查找表

时间:2018-03-02 21:26:43

标签: javascript data-structures

我试图创建一个接受两个参数并返回该点存储的值的结构。沿着岩石,纸张,剪刀的路线。

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

谢谢,您可以提供任何帮助!

1 个答案:

答案 0 :(得分:1)

似乎只需要一个二维数组:

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'