Javascript 更好的jQuery对象过滤

Javascript 更好的jQuery对象过滤,javascript,jquery,object,filter,Javascript,Jquery,Object,Filter,在一个涉及许多对象的js应用程序上工作,我希望能够通过一个特定的变量抓取一个对象。这是我的密码: var pin = '0000'; $.each(employees, function(){ if(this.pin === pin){ curEmployee = this; return false; } }); 虽然这种方法可行,但我觉得有更好的解决方案。。。我在摆弄格雷普,试着: var pin = '0000'; curEmploye

在一个涉及许多对象的js应用程序上工作,我希望能够通过一个特定的变量抓取一个对象。这是我的密码:

var pin = '0000';

$.each(employees, function(){
    if(this.pin === pin){
        curEmployee = this;
        return false;
    }
});
虽然这种方法可行,但我觉得有更好的解决方案。。。我在摆弄格雷普,试着:

var pin = '0000';

curEmployee = $.grep(employees, function(e,i){
    return e[pin] === pin;
});
但是,很难确定结果,因为现在我需要检查长度,以查看是否有返回的数组,等等


正在寻找最佳实践解决方案。

由于数组总是从
$.grep
返回,因此只需获取数组的
[0]
索引即可。如果
未定义
,则不存在匹配项

var pin = '0000';

curEmployee = $.grep(employees, function(e,i){
    return e.pin === pin;
})[0]; // <--- always grab the first index

您可以始终使用jquery的
filter
方法:

var pin = '0000';

curEmployee = $(employees).filter(function(e){
  return e.pin === pin;
})[0];

老实说,如果你正在使用大量的对象,那么性能是很重要的

。。您希望避免js中的异步错误。。你应该选择纯js。接近

类似于上帝通过所有物体的循环。可能还有一些结果缓冲。我知道这很痛苦,你可能不会喜欢这样做。但在大多数情况下,这是最快的方法


我个人在js中使用这种方法。我们正在制作crm,因为jquery方式是一种禁止1000多个对象的方式…

这可能更适合CodeReview-最佳实践问题会引起争论,这是最好避免的。我总是使用第一种方式,因为“中断”只允许列举必要的内容。也许这只是一个古老的学校习惯…好答案,我甚至没想过。
var pin = '0000';

curEmployee = $(employees).filter(function(e){
  return e.pin === pin;
})[0];