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

からは常に配列が返されるため、配列のインデックスを$.grep取得するだけです。[0]の場合undefined、一致はありませんでした。

var pin = '0000';

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

Array.prototype.filterjQuery がなければ、同じ方法で使用できます。

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 に答える