2

私は、要素の配列を取り、カスタマイズされた方法 (並べ替え、列の順序、基準) で表に表示する JavaScript プラグインを作業中です。カスタマイズ オプションは動的に作成されます (日付プロパティは「前」基準などを生成します)。

プラグインはさまざまなプロジェクトで使用されるため、要素はさまざまであり、表示がカスタマイズされると、テーブルの作成ごとに必要なプロパティも異なります。

要素をオブジェクトまたは配列として要求する必要がありますか?

基本的に (実際のコードではありません - 私は foreach を使用しません;) 何が行われるかは次のとおりです:

foreach element in allelements
row=new tablerow
foreach columnid in chosencolumns
    row.add(element[columnid])
table.add(row)

各要素が配列の場合、columnid はインデックスですが、各要素の場合はプロパティ名になります。

element[3] は element['prop3'] より速いですか?

ここで要素を配列として格納するベータ版を作成しましたが、それが最善/最速の方法であるかどうかはわかりません

編集: プロジェクトの性質上、要素のプロパティの順序は重要ではありません。 また、どの方法がより多くのメモリを消費しますか? 一部のシステムは、多くのプロパティを持つ多くの要素で構成されるため、メモリが問題になる可能性があります:-/

2番目の編集:オブジェクトを使用する場合、オブジェクトのプロパティ名の配列も作成する必要があります。したがって、ユーザーが列 1、2、および 3 として 13 番目、2 番目、および 4 番目のプロパティでビューを構成することを選択した場合、各要素に対して次の操作を行う必要があります。

row.add(element[propertynames[13]])
row.add(element[propertynames[2]])
row.add(element[propertynames[4]])

一方、配列ソリューションを選択した場合は、プロパティ名のルックアップを「保存」します。

row.add(element[13])
row.add(element[2])
row.add(element[4])
4

1 に答える 1

3

あるデータ構造を他のデータ構造より優先するための引数となるいくつかの基準がありますが、それは主観的な議論につながります。

ただし、自問すべき最も重要な質問は
、データを順番に表示したり並べ替えたりする必要がありますか?

答えが「はい」の場合は、Arrayを使用する必要があります。オブジェクトキーは、仕様上順不同です。もちろん、キーをループしてソートすることもできますが、繰り返しますが、データの種類とその読み取り方法によって異なります。


Javascript 配列(これはまだオブジェクトです) を使用する場合は、 for..in. これは、機能しないループに対して可能な限り遅い手法です。whileforまたはdo-while代わりに行ってください。

本当に大量のデータについて話しているようです。一般に、可能であればそれを避けたいと考えています。データを小さなチャンクで読み取って転送するか、データをストリーミングする方が良いオプションかもしれません。また、転送量が多い場合はデータ構造が要因になります。同様のオブジェクト記法は、一般に、単純なArrayよりも多くの構造情報を持っています。

于 2012-12-28T09:52:14.160 に答える