1

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

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;
});

但是,很难确定结果,因为现在我需要检查长度以查看是否提供了返回的数组等。

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

4

3 回答 3

3

由于总是从 Array 返回 Array $.grep,因此只需获取[0]Array 的索引。如果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];
于 2012-10-17T22:29:04.437 回答
0

你总是可以使用 jquery 的filter方法:

var pin = '0000';

curEmployee = $(employees).filter(function(e){
  return e.pin === pin;
})[0];
于 2012-10-17T22:30:37.323 回答
0

老实说,如果您使用大量对象并且性能很重要...

.. 并且您想避免 js 中的异步错误 .. 您应该选择纯 js。方法。

类似于 for 循环的东西,上帝通过所有对象。可能还有一些结果缓冲。我知道这很麻烦,你可能不会喜欢这样做。但在大多数情况下,这是最快的方式。

我个人在 js 中使用这种方法。我们正在制作 crm,因为 jquery 方式在 1000 多个对象上是行不通的......

于 2012-10-17T22:38:02.783 回答