use*_*106 2 javascript algorithm jquery design-patterns
我是一名初级JavaScript开发人员,我发现我经常遇到需要做的事情
"Find the first element satisfying a condition, then do something with the element"
Run Code Online (Sandbox Code Playgroud)
我最后for用一个break语句写了一个循环.例如,这是我写的一段生产代码:
// set up event listeners for changing the snake's direction
// based on arrows keys pressed
// see: http://stackoverflow.com/questions/6226859/how-can-i-track-arrow-keys-in-chrome-and-ie
var arrowKeyMap = { 37 : "left", 38: "down", 39: "right", 40: "up" };
$(document).keydown(function (e)
{
// want to make this more compact ...
for (var i in arrowKeyMap)
{
if (i == e.keyCode)
{
SG.snake.changeDirection(arrowKeyMap[i]);
break;
}
}
});
Run Code Online (Sandbox Code Playgroud)
我想知道是否有本机JavaScript工具,或使用JQuery的方式,使其更紧凑,或者如果我需要手动滚动可重复使用的过程,这样的情况.我知道C#有一个FirstOrDefault和C++ find_if有点像我想要的.
由于您已经获得了映射,因此javascript Object允许您直接查找key,只需检查具有该对象的对象key是否存在.
所以你可以使用e.keyCodeas键来查找是否有映射.
var arrowKeyMap = { 37 : "left", 38: "down", 39: "right", 40: "up" };
$(document).keydown(function (e)
{
var key = arrowKeyMap[e.keyCode];
if (key) { // Do something if there's a map to the key.
SG.snake.changeDirection(key );
}
});
Run Code Online (Sandbox Code Playgroud)