Javascript 更好的jQuery对象过滤
在一个涉及许多对象的js应用程序上工作,我希望能够通过一个特定的变量抓取一个对象。这是我的密码: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
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];