Excelのような列ヘッダーオプションフィルタリングアルゴリズム

Denissvyatovets

Excelテーブルで、ある列にフィルターを設定すると、別の列などに関係のないフィルターオプションがフィルターされます。

しかし、Excelがこれを行うために使用するアルゴリズムと、JSの実装があるかどうかを知る必要があります。

新しいフィルターが適用されているときに各列の一意の値のリストを更新しようとしましたが、このアプローチでは、前のフィルター列で選択されていないオプションが失われます。Excelはどういうわけかそれらを維持することができます。

この質問は似ていますが、特定の実装について尋ねます必要なのはアルゴリズム、または少なくともその名前ですフィルタリングのようなAngular JSExcelです。

現在の実装の擬似コード:

var allRows: {[columnKey]: string}[]
var visibleRows: {[columnKey]: string}[]
var filterColumns: {[columnKey]: string[]}
var columns: { columnKey: string }[]
var uniqueValues: {[columnKey]: string[]}

/* when header menu opens it gets unique values
from the column as filter options */
function getHeaderValues(columnKey): string[] {
    return uniqueValues[columnKey]
}

/* when user applies filter this function is being called
to update visible rows and unique values */
function setFilter(filterColumn: string, values: string[]) {
    filterColumns = {
        ...filterColumns,
        [filterColumn]: values 
    }

    visibleRows = getRows(allRows, filterColumns)
    uniqueValues = updateUniqueValues(columns, visibleRows)
}
tysonwright

このようなアルゴリズムの基本的な考え方は、各フィルターが現在利用可能なデータに基づいて計算されるということです。フィルタが適用されると、他のフィルタは現在使用可能な値の新しいセットに基づいて再計算します。次のデータを検討してください。

FOO BAR
===========
1   1
1   2
2   3
2   4

FOOのフィルターの値は1、2になり、BARのフィルターの値は1、2、3、4になります。FOOを1にフィルタリングすると、シートには次のように表示されます。

FOO BAR
===========
1   1
1   2

そして、すべてのフィルターで使用可能な値を再計算します。これで、BARの値は1,2のみであることがわかります。

さらに明確にするために編集:
1。初期フィルター:完全なデータからのすべての列
2.列Aをフィルターします。列Aは再計算されませんが、他のすべての列は
3です。フィルター列B:列Bは再計算されませんが、列Aは
4です。したがって、データが表示されないフィルターをクリックすることはできません
。5。ステップ4では、列Aをすべてでフィルターするオプションが失われますが、それは良いことです。Bにあるフィルターを指定すると、使用できないものでAをフィルター処理できないためです。これにより、セットが空になりますが、この反復アプローチを使用してフィルターを再計算することで防止できます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

「名前でソート」オプションのファインダーアルゴリズム

分類Dev

オーバーラップのない方法でノードメッシュをレンダリングするアルゴリズムアプローチ

分類Dev

配列とC ++文字列を使用したハッシュアルゴリズムの実装-セグメンテーション違反(コアダンプ)

分類Dev

Androidアプリケーションのsnapchatフィルター画像のような画像サイズのスケーリング

分類Dev

ヘクスのスターパスファインディングアルゴリズムのバグ

分類Dev

Spark:共起のカウント-膨大なコレクションの効率的なマルチパスフィルタリングのアルゴリズム

分類Dev

カーブフィッティングによるクラスタリングアルゴリズム

分類Dev

再帰的アルゴリズムでのセグメンテーション違反(コアダンプ)

分類Dev

フィッシャー-イェーツアルゴリズム(C#)を使用した後のランダムな文字列の衝突

分類Dev

アルゴリズムのようなフィボナッチ

分類Dev

ナップサックアルゴリズムのバリエーション

分類Dev

リーフレットルーティングエラーのカスタマイズ(オプション)

分類Dev

オペレーティングシステムのSCANおよびCSCANアルゴリズム

分類Dev

次のようなアルゴリズムをどのようにコーディングしますか?

分類Dev

フラクショナルナップサックアルゴリズムのセグメンテーション違反

分類Dev

ブルームフィルターを使用したハイフネーションアルゴリズム

分類Dev

文字列アルゴリズムの代替ケーシング

分類Dev

小さな文字列ハッシュの場合、MD5のような非推奨のアルゴリズムまたはSHA256のようなアルゴリズムのプレフィックスを使用する必要がありますか?

分類Dev

4つのオプションで配列をソートするためのアルゴリズム

分類Dev

アセットバージョンの衝突を防ぐために、R-マークダウンテンプレートヘッダーインクルードをフィルタリングするにはどうすればよいですか?

分類Dev

ExcelのPowerQuery From Webオプションを使用して、さまざまなサイトからニュースヘッドラインを抽出し、データをリアルタイムで保持するにはどうすればよいですか?

分類Dev

データのフィルタリング-オプションドロップダウンを使用した各レンダリングビュー、BatmanJS

分類Dev

セクション ヘッダーを含むカスタム リスト アダプターを使用した ListView のカスタム フィルタリング

分類Dev

最初の列ではなく行ヘッダー(カテゴリ)でGoogle視覚化グラフをフィルタリングする方法

分類Dev

適切なアルゴリズムでデータをフィルタリングするにはどうすればよいですか?

分類Dev

安定したパーティションはどのように適応アルゴリズムですか?

分類Dev

列ヘッダーのクリックをフィルタリングする

分類Dev

Javaのアプリケーション層プロトコルヘッダーフィールド

分類Dev

k-medoidsアルゴリズム(PAMなど)を使用してクラスタリングソリューションを別のデータセットに適用するにはどうすればよいですか?

Related 関連記事

  1. 1

    「名前でソート」オプションのファインダーアルゴリズム

  2. 2

    オーバーラップのない方法でノードメッシュをレンダリングするアルゴリズムアプローチ

  3. 3

    配列とC ++文字列を使用したハッシュアルゴリズムの実装-セグメンテーション違反(コアダンプ)

  4. 4

    Androidアプリケーションのsnapchatフィルター画像のような画像サイズのスケーリング

  5. 5

    ヘクスのスターパスファインディングアルゴリズムのバグ

  6. 6

    Spark:共起のカウント-膨大なコレクションの効率的なマルチパスフィルタリングのアルゴリズム

  7. 7

    カーブフィッティングによるクラスタリングアルゴリズム

  8. 8

    再帰的アルゴリズムでのセグメンテーション違反(コアダンプ)

  9. 9

    フィッシャー-イェーツアルゴリズム(C#)を使用した後のランダムな文字列の衝突

  10. 10

    アルゴリズムのようなフィボナッチ

  11. 11

    ナップサックアルゴリズムのバリエーション

  12. 12

    リーフレットルーティングエラーのカスタマイズ(オプション)

  13. 13

    オペレーティングシステムのSCANおよびCSCANアルゴリズム

  14. 14

    次のようなアルゴリズムをどのようにコーディングしますか?

  15. 15

    フラクショナルナップサックアルゴリズムのセグメンテーション違反

  16. 16

    ブルームフィルターを使用したハイフネーションアルゴリズム

  17. 17

    文字列アルゴリズムの代替ケーシング

  18. 18

    小さな文字列ハッシュの場合、MD5のような非推奨のアルゴリズムまたはSHA256のようなアルゴリズムのプレフィックスを使用する必要がありますか?

  19. 19

    4つのオプションで配列をソートするためのアルゴリズム

  20. 20

    アセットバージョンの衝突を防ぐために、R-マークダウンテンプレートヘッダーインクルードをフィルタリングするにはどうすればよいですか?

  21. 21

    ExcelのPowerQuery From Webオプションを使用して、さまざまなサイトからニュースヘッドラインを抽出し、データをリアルタイムで保持するにはどうすればよいですか?

  22. 22

    データのフィルタリング-オプションドロップダウンを使用した各レンダリングビュー、BatmanJS

  23. 23

    セクション ヘッダーを含むカスタム リスト アダプターを使用した ListView のカスタム フィルタリング

  24. 24

    最初の列ではなく行ヘッダー(カテゴリ)でGoogle視覚化グラフをフィルタリングする方法

  25. 25

    適切なアルゴリズムでデータをフィルタリングするにはどうすればよいですか?

  26. 26

    安定したパーティションはどのように適応アルゴリズムですか?

  27. 27

    列ヘッダーのクリックをフィルタリングする

  28. 28

    Javaのアプリケーション層プロトコルヘッダーフィールド

  29. 29

    k-medoidsアルゴリズム(PAMなど)を使用してクラスタリングソリューションを別のデータセットに適用するにはどうすればよいですか?

ホットタグ

アーカイブ