JavaScript在数组中查找单个元素

JavaScript在数组中查找单个元素,javascript,arrays,linq,Javascript,Arrays,Linq,.NET的LINQ包含一个运算符 返回序列中唯一的元素,如果序列中没有一个元素,则引发异常 最新版本的JavaScript中是否有类似的版本?(撰写本文时为ECMA v8) 我能找到的最接近的操作是,尽管人们必须编写自己的样板文件来断言一个elemet正好匹配 .single()的预期功能示例: const arr=[1,4,9]; arr.single(v=>v>8&&vvv>10);//由于没有匹配项,因此引发异常 本机JS中不存在这样的函数,但是编写自己的函数来完成同样的任务是很简单的:

.NET的LINQ包含一个运算符

返回序列中唯一的元素,如果序列中没有一个元素,则引发异常

最新版本的JavaScript中是否有类似的版本?(撰写本文时为ECMA v8)

我能找到的最接近的操作是,尽管人们必须编写自己的样板文件来断言一个elemet正好匹配

.single()
的预期功能示例:

const arr=[1,4,9];
arr.single(v=>v>8&&v<10);//返回9
arr.single(v=>v<5);//由于有多个匹配项,因此引发异常
arr.single(v=>v>10);//由于没有匹配项,因此引发异常

本机JS中不存在这样的函数,但是编写自己的函数来完成同样的任务是很简单的:

const single=(arr,test)=>{
让发现;
for(设i=0,l=arr.length;iv>8&&v<10);//返回9
单个(arr,v=>v<5);//由于有多个匹配项,因此引发异常
单个(arr,v=>v>10);//由于没有匹配项,因此引发异常
最新版本的JavaScript中是否有类似的版本?(撰写本文时为ECMA v8)

不,不是

您可以更改
数组的原型(这是不可取的),并添加一个方法来过滤数组并返回单个找到的项或抛出错误

Array.prototype.single=函数(cb){
var r=该过滤器(cb);
如果(!r.length){
掷“零比零”;
}
如果(r.长度!==1){
扔“太多火柴”;
}
返回r[0];
};
常数arr=[1,4,9];
console.log(arr.single(v=>v>8&&v<10));//9
console.log(arr.single(v=>v<5));//异常,因为有多个匹配项
//console.log(arr.single(v=>v>10));//异常,因为没有与的匹配
,您可以使用LINQ样式执行此操作:

Manipula.from([1, 4, 9]).single(v=> v>8 && v<10)
Manipula.from([1,4,9])。单个(v=>v>8&&v@ADreNaLiNe-DJ
Manipula.from([1, 4, 9]).single(v=> v>8 && v<10)