用javascript选择街头霸王

时间:2016-12-27 11:53:03

标签: javascript arrays push

我想在二维数组中创建选择历史。 我得到的是这个:

var fighters = [
["Ryu", "E.Honda", "Blanka", "Guile", "Balrog", "Vega"],
["Ken", "Chun Li", "Zangief", "Dhalsim", "Sagat", "M.Bison"]
];

var initial_position = (0,0)
var moves = ['right', 'down', 'left', 'left', 'left', 'left', 'right']

我想要的结果是例如:

['E.Honda', 'Chun Li', 'Ken', 'M.Bison', 'Sagat', 'Dhalsim', 'Sagat']

位置[0,0]位于顶角。 我的问题是决定选择是否在第一行中,这意味着所选择的战斗机将成为该行中的第一个。但选择不得超过底线下的顶部!

你能帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

您可以检查fighters.length中的某个元素是小于0还是大于fighters[0].lengthvar fighters = [ ["Ryu", "E.Honda", "Blanka", "Guile", "Balrog", "Vega"], ["Ken", "Chun Li", "Zangief", "Dhalsim", "Sagat", "M.Bison"] ]; var moves = ['right', 'down', 'left', 'left', 'left', 'left', 'right'] var result = [] var ipos = [0, 0]; moves.forEach(function(e) { if (e == 'right') { ipos[0] += 1 } else if (e == 'left') { ipos[0] -= 1 } else if (e == 'down') { ipos[1] += 1; } else if (e == 'up') { ipos[1] -= 1 } if (ipos[0] > fighters[0].length - 1 || ipos[0] < 0) ipos[0] = fighters[0].length - 1; if (ipos[1] > fighters.length - 1 || ipos[1] < 0) ipos[1] = fighters.length - 1; result.push(fighters[ipos[1]][ipos[0]]) }) console.log(result)的最大值,并将其重置为该最大数量。

PPS_Id Amount
123    100
1234   150

答案 1 :(得分:0)

酷..!我讨厌ifelse ...所以让我们使用我们的发明Array.prototype.rotate()来制作一些功能并创建一个简单的导航系统,以便将目标单元格放在{ {1}}一直占据位置。

&#13;
&#13;
fighters[0][0]
&#13;
&#13;
&#13;

这很好但是为了将目标单元始终保持在[0] [0]位置而不是旋转数组,可以简单地保留一个光标对象并修改Array.prototype.rotate = function(n) { var len = this.length; return !(n % len) ? this.slice() : this.map((e,i,a) => a[(i + (len + n % len)) % len]); }; function navigate(m,f){ var d = { left: a => a.map(e => e.rotate(-1)), right: a => a.map(e => e.rotate(1)), up: a => a.rotate(-1), down: a => a.rotate(1) }; return m.reduce((p,c) => (f = d[c](f), p.concat(f[0][0])) ,[]); } var fighters = [["Ryu", "E.Honda", "Blanka", "Guile", "Balrog", "Vega"], ["Ken", "Chun Li", "Zangief", "Dhalsim", "Sagat", "M.Bison"] ], moves = ['right', 'down', 'left', 'left', 'left', 'left', 'right']; console.log(navigate(moves,fighters));对象以便根据接收的命令调整光标位置的方法。然后我们只需要一个额外的游标对象,如d。让我尝试实现那个我们将不再需要{x: 0, y: 0}的东西。

&#13;
&#13;
Array.prototype.rotate()
&#13;
&#13;
&#13;