Javascript有办法做"find_if"或"FirstOrDefault"吗?

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有点像我想要的.

fuy*_*oya 6

由于您已经获得了映射,因此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)