vul*_*ven 39 javascript linq arrays filter node.js
在C#中,我们有Enumerable.First(predicate).鉴于此JavaScript代码:
function process() {
var firstMatch = ['a', 'b', 'c'].filter(function(e) {
return applyConditions(e);
}).shift();
if(!firstMatch) {
return;
}
// do something else
}
function applyConditions(element) {
var min = 97;
var max = 122;
var random = Math.floor(Math.random() * (max - min + 1) + min);
return element === String.fromCharCode(random);
}
Run Code Online (Sandbox Code Playgroud)
除了forEach使用循环,使用多个或运算符或隐式调用some(predicate),是否有更聪明的方法来查找firstMatch?优选地,JavaScript函数(类似的东西filterFirst(pedicate))在第一次匹配时短路,类似于C#的Enumerable.First()实现?
FWIW,我的目标是node.js/io.js运行时.
Ben*_*aum 58
无需重新发明轮子,正确的方法是使用.find:
var firstMatch = ['a', 'b', 'c'].find(applyConditions);
Run Code Online (Sandbox Code Playgroud)
如果您使用的是不支持的浏览器,则.find可以对其进行填充
LINQ用户在没有谓词的情况下调用firstand firstOrDefaulta lot,这是不可能的find。所以,
first() {
var firstOrDefault = this.firstOrDefault();
if(firstOrDefault !== undefined)
return firstOrDefault;
else
throw new Error('No element satisfies the condition in predicate.');
}
firstOrDefault() {
return this.find(o => true);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24017 次 |
| 最近记录: |