javascript - Javascript 是否有办法执行 "find_if"或 "FirstOrDefault"?

标签 javascript jquery algorithm design-patterns

我是一名初级 JavaScript 开发人员,我发现我经常遇到需要做类似

"Find the first element satisfying a condition, then do something with the element" 

我最终编写了一个带有 break 语句的 for 循环。例如,这是我写的一段生产代码:

// 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;
        }
    }

});

我想知道是否有 native JavaScript 工具或使用 JQuery 的方法使它更紧凑,或者我是否需要为这种情况手动滚动可重用的过程。我知道 C# 有一个 FirstOrDefault,C++ 有一个 find_if,这有点像我想要的。

最佳答案

因为你已经得到了映射,javascript的Object允许你直接通过key查找,只需要检查带有key的对象是否是存在与否。

因此您可以使用 e.keyCode 作为键来查找是否存在到它的映射。

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

关于javascript - Javascript 是否有办法执行 "find_if"或 "FirstOrDefault"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31824882/

相关文章:

javascript - phantomjs 不使用 window.scollTo 向下滚动

javascript - 如何在 meteor.js 网站中使用 youtube 数据 API v3.0?

javascript - 正确附加具有正确索引的多个元素 <div>

algorithm - 测量信号的峰值检测

在数据中查找重复模式的算法

algorithm - 这个二进制搜索的伪代码是否正确?

javascript - 如何在 meteor.js 上保存额外的用户详细信息,例如家庭住址

javascript - WebRTC 视频 session (多对多)

jquery - 同一列表中的 2 个不同的可排序项

javascript - 将 $(this) 传递给函数