在涉及许多对象的js app上工作,我希望能够通过特定变量获取对象。这是我的代码:
var pin = '0000';
$.each(employees, function(){
if(this.pin === pin){
curEmployee = this;
return false;
}
});
虽然这种方法有效,但我觉得有更好的解决方案......我正在用grep摆弄并尝试:
var pin = '0000';
curEmployee = $.grep(employees, function(e,i){
return e[pin] === pin;
});
但是,确定结果更难,因为现在我需要检查长度以查看是否提供了返回的数组等。
只是寻找最佳实践解决方案。
答案 0 :(得分:3)
由于始终从$.grep
返回一个数组,因此只需获取数组的[0]
索引。如果undefined
,则无法匹配。
var pin = '0000';
curEmployee = $.grep(employees, function(e,i){
return e.pin === pin;
})[0]; // <--- always grab the first index
如果没有jQuery,您可以以相同的方式使用Array.prototype.filter
:
var pin = '0000';
curEmployee = employees.filter(function(e,i){
return e.pin === pin;
})[0];
答案 1 :(得分:0)
你总是可以使用jquery的filter
方法:
var pin = '0000';
curEmployee = $(employees).filter(function(e){
return e.pin === pin;
})[0];
答案 2 :(得分:0)
老实说,如果你正在使用物体和性能很重要......
..你想避免js中的异步错误..你应该去一个纯粹的js。方法
像上帝通过所有物体的循环。可能还有一些结果缓冲。我知道这是一个痛苦的屁股,你可能不喜欢这样做。但在大多数情况下,这是最快的方法。
我个人在js中使用这种方式。 crm我们正在制作,因为jquery的方式是没有1000多个对象......