等同于LINQ的Enumerable.First(predicate)

13 浏览
0 Comments

等同于LINQ的Enumerable.First(predicate)

在C#中,我们有Enumerable.First(predicate)方法。给定以下JavaScript代码:

function process() {
  var firstMatch = ['a', 'b', 'c'].filter(function(e) {
    return applyConditions(e);
  }).shift();
  if(!firstMatch) {
    return;
  }
  // 其他操作
}
function applyConditions(element) {
  var min = 97;
  var max = 122;
  var random = Math.floor(Math.random() * (max - min + 1) + min);
  return element === String.fromCharCode(random);
}

除了使用forEach、循环、多个或运算符或隐式调用some(predicate)之外,是否有一种更聪明的方法来找到firstMatch?最好是一个类似于C#的Enumerable.First()实现的JavaScript函数(类似于filterFirst(predicate)),能够在第一个匹配时短路执行。顺便提一下,我正在针对node.js/io.js运行时。

0