私は自分のアプリケーションに関する実用的な洞察と理論的な洞察の両方を探しています。
次のように構造化された、それぞれ 5 つのプロパティを持つ 50,000 の js オブジェクトを取得します。
0: Object
CostCenter: "1174"
Country: "USA"
Job: "110-Article Search"
Team: "Financial"
Username: "anderson"
「Country」配列など、5 つのそれぞれの配列 (オブジェクト プロパティごとに 1 つ) を取得します。
4: Array[4]
0: "Asia Pacific"
1: "Australia"
2: "Brazil"
3: "Canada"
50,000 個のオブジェクトをフィルター処理して、それぞれの配列に 0 件の一致があるプロパティが少なくとも 1 つあるすべてのオブジェクトを除外する最も効率的な方法は何ですか。
配列の最大サイズは次のとおりです。
CostCenter, 77
Country, 27
Job, 27
Team, 10
Username, 99
私の最初のアイデアは、50,000 個のオブジェクトをループすることです。
if the 'CostCenter' property === any CostCenter array item,
push the object into a temporary array of objects
これにより、一時配列に 20,000 個のオブジェクトしか残らない可能性があります。次に、各プロパティとそれぞれのフィルタリング配列に対してこのプロセスを繰り返し、毎回新しい一時オブジェクトを作成します。
最後に、このプロセスにより最後の配列が残ります。これは、5 つのフィルターを通過した後の結果データです。
18 MB の JSON ファイルをダウンロードするのに約 20 秒かかります (それでも問題ありません)。
...これは、16 GB RAM の Chrome ブラウザーが JSON を 50,000 の js オブジェクトに処理し、これらのオブジェクトをループして、JSON に含まれるすべての一意の値でフィルタリング配列を動的に構築するのにかかる時間よりも指数関数的に長くなります。
これは効率的ですか?処理されるデータの量が非常に高速に見えますが、一部のユーザー環境 (上司の iPad など) ではブラウザー内のメモリが不足する可能性があるようにも感じます。
より良い方法はありますか?
Node.JSでこれを行う必要がありますか? 私は JavaScript プログラマーなので、習得にそれほど時間はかからないようです。Plus Node は、最近では非常に流行に乗っています。
一部のブラウザーは 18 MB の json ファイルのダウンロードに失敗しますか? 制限に関する情報はどこにありますか?