Vue Element フロントエンドアプリケーション開発のための従来の JS 処理機能

Vue Element フロントエンドアプリケーション開発のための従来の JS 処理機能

1. 従来のコレクションに対するフィルター、マップ、および削減処理方法

フィルター関数の主な目的は、配列要素をフィルターし、条件を満たす要素の配列を返すことです。

定数数値 = [10,20,30,111,222,333]
newNums = nums.filter(function(n){
    n<100を返す
})

出力:

[10,20,30]

map 関数は配列の各要素をマップし、新しい配列を返します。元の配列は変更されません。newNums の各数値を 2 倍にします。

定数数値 = [10,20,30,111,222,333]
newNums = nums.map(function(n){
    n*2を返す
})

出力:

[20,40,60,222,666]

Reduce 関数は主に、配列のすべての要素を加算したり乗算したりするなど、配列のすべての要素を要約するために使用されます。

定数数値 = [10,20,30,111,222,333]
newNums = nums.reduce(function(preValue,n){
    PreValue+n を返す
},0)

出力:

726

次の包括的なケースに示すように、複数の治療法を組み合わせることもできます。

定数数値 = [10,20,30,111,222,333]
newNums = nums.filter(function(n){
    n<100を返す
}).map(関数(n){
    n*2を返す
}).reduce(function(preValue,n){
    preValue+n を返す
},0)

結果:

120

配列コレクションには、filter メソッドに似た find メソッドもあります。

find() メソッドは主に、条件を満たす配列の最初の要素を返すために使用されます (要素がない場合、undefined を返します)

var 配列 = [1,2,3,4,5,6,7];
 var result = Array.find(function(value){
     戻り値 > 5; //条件});
 console.log(結果); //6
 console.log(配列); //[1,2,3,4,5,6,7]

同様に、vue の require.context の処理メカニズムを使用して、処理のためにファイルを走査することもできますが、次のコードに示すように、フィルターも使用する必要があります。

次のコードは、フォルダ内のファイルに対して実行するフィルタリング操作です。

const req = require.context('vue-awesome/icons', true, /\.js$/)
定数 requireAll = requireContext => requireContext.keys()

定数 re = /\.\/(.*)\.js/

const vueAwesomeIcons = requireAll(req).filter((key) => { return key.indexOf('index.js') < 0 }).map(i => {
  i.match(re)[1]を返す
})

デフォルトの vueAwesomeIcons をエクスポートする

2. 再帰処理

場合によっては、コレクションがネストされているため (children コレクションを含む children など)、キー属性に基づいて JSON コレクションをクエリする必要があります。この処理方法では再帰が必要です。

例えば、私が定義したメニューコレクションには、このようなネストされた構造があり、名前に応じて対応するオブジェクトを取得する必要がある場合、再帰処理関数が関与します。

まず、メニューの JSON コレクションを見てみましょう。

// このメニューデータは通常サーバーから返されます export const asyncMenus = [
  {
    id: '1',
    pid: '-1'、
    テキスト: 'ホームページ'、
    アイコン: 'ダッシュボード'、
    名前: 'ダッシュボード'
  },
  {
    id: '2',
    pid: '-1'、
    テキスト:「製品情報」、
    アイコン: 'テーブル',
    子供たち: [
      {
        id: '2-1',
        pid: '2',
        テキスト:「製品表示」、
        名前: 'product-show',
        アイコン: 'テーブル'
      }]
  },
  {
    id: '3',
    pid: '-1',
    テキスト:「その他管理」、
    アイコン: '例',
    子供たち: [
      {
        id: '3-1',
        pid: '3'、
        テキスト:「アイコン管理」
        名前: 'アイコン',
        アイコン: '例'
      },
      {
        id: '3-3',
        pid: '3'、
        テキスト: 'ツリー関数の表示'、
        名前: '木'、
        アイコン: '木'
      },
      {
        id: '3-2',
        pid: '3'、
        テキスト: 'セカンダリメニュー2'、
        アイコン: '木'、
        子供たち: [
          {
            id: '3-2-2',
            pid: '3-2'、
            テキスト: 'レベル 3 メニュー 2'、
            名前: 'menu1-1',
            アイコン: 'フォーム'
          }
        ]
      }
    ]
  }
]

ID に基づいてクエリをトラバースする必要がある場合、それは典型的な再帰クエリ処理です。

// メニューIDに応じて対応するメニューオブジェクトを取得します。FindMenuById(menuList, menuid) {
      (var i = 0; i < menuList.length; i++) {
        var item = メニューリスト[i];
        if (item.id && item.id === menuid) {
          返品商品
        } そうでない場合 (item.children) {
          var foundItem = this.FindMenuById(item.children, menuid)
          if (foundItem) { // 見つかった場合のみfoundItemを返す
          }
        }
      }
    }

ここで注目すべき点は、再帰時に次の直接的な return を使用できないことです。

this.FindMenuById(item.children, menuid) を返します。

返される結果があるかどうかを判断する必要があります。そうでないと、ネストされた再帰によって未定義の型が返される可能性があります。

var foundItem = this.FindMenuById(item.children, menuid)
  if (foundItem) { // 見つかった場合のみfoundItemを返す
  }

3. forEach トラバーサルコレクション処理

多くの場合、コレクションに対してforEachトラバーサルを実行する必要があります。次のように、コレクションをキー値に従って処理し、グローバルフィルタの処理操作を登録します。

// グローバルフィルターをインポートする import * as filters from './filters'
// グローバルを登録する filterObject.keys(filters).forEach(key => {
  Vue.filter(キー、フィルター[キー])
})

または、APIを介してデータを取得した後にコレクションを処理します

// 辞書などをバインドするための製品タイプを取得します。GetProductType().then(data => {
      if (データ) {
        this.treedata = []; // ツリーリストをクリアする data.forEach(item => {
          this.productTypes.set(アイテムID、アイテム名)
          this.typeList.push({ キー: item.id, 値: item.name })

          var ノード = { id: item.id, ラベル: item.name }
          this.treedata.push(ノード)
        })

        // リスト情報を取得する this.getlist()
      }
    });

または、辞書データを要求するときに、空でない値の判断を実行します。

// 辞書型を使用してサーバーからデータを要求します GetDictData(this.typeName).then(data => {
        if (データ) {
          データ.forEach(アイテム => {
            if (item && typeof (item.Value) !== 'undefined' && item.Value !== '') {
              that.dictItems.push(アイテム)
            }
          });
        }
      })

forEach() メソッドは、配列内の各要素に対してコールバック関数を 1 回実行するためにも使用されますが、戻り値はありません (または、戻り値が未定義です。コールバック関数に return ステートメントを記述しても、戻り値は未定義のままです)。

注: forEach に 2 つのパラメーターがある場合、最初のパラメーターはコレクション内の要素であり、2 番目のパラメーターはコレクションのインデックスです。

4. Object.assign 代入メソッド

場合によっては、新しいコレクションを別のオブジェクトにコピーし、元のオブジェクトのプロパティ値を置き換える必要があります。この場合、Object オブジェクトの assignment メソッドを使用できます。

たとえば、編集インターフェイスが表示されると、要求されたオブジェクトのプロパティがフォーム オブジェクトにコピーされます。

var パラメータ = { id: id }
GetProductDetail(param).then(データ => {
	オブジェクトにデータを割り当てます。
})

またはクエリを実行するときに、クエリ条件を取得して部分的な置換を実行します

// 通常のページングクエリ条件を構築 var param = {
        タイプ: this.producttype === 'all' ? '' : this.producttype,
        ページインデックス: this.pageinfo.pageindex、
        ページサイズ: this.pageinfo.pagesize
      };

      // SearchForm 条件を param に追加し、クエリを送信します。 param.type = this.searchForm.ProductType // 対応する属性に変換します。 Object.assign(param, this.searchForm);

5. slice() メソッド

slice() メソッドは、既存の配列から選択された要素を返します。

構文は次のとおりです。

配列オブジェクト.スライス(開始,終了)

次の例に示すように。

red = parseInt(color.slice(0, 2), 16) とします。
緑をparseInt(color.slice(2, 4), 16)とします。
青をparseInt(color.slice(4, 6), 16)とします。

または、フィルター機能を組み合わせてアイコンコレクションの一部を取得することもできます。

vueAwesomeIconsFiltered: 関数() {
  const that = this
  var list = that.vueAwesomeIcons.filter(item => { return item.indexOf(that.searchForm.label) >= 0 })
  if (that.searchForm.pagesize > 0) {
    list.slice(0, that.searchForm.pagesize) を返します
  } それ以外 {
    リストを返します。
  }
}

以上が、Vue Element フロントエンドアプリケーション開発の従来の JS 処理機能の詳細です。Vue Element の従来の JS 処理機能の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • element-plus は vue3.x UI フレームワークです (element-ui 3.x バージョンを初めて体験しました)
  • vue3.x+vite+element-ui+vue-router+vuex+axios を使用してプロジェクトをビルドします
  • Vue3.x で element-plus を使用するさまざまな方法の詳細な説明

<<:  VMware仮想マシンでのLinuxのコピー&ペーストの詳細な説明

>>:  GolangでMySQLデータベースのバックアップを実装する方法

推薦する

MySQL はどのようにしてマルチバージョンの同時実行性を実現するのでしょうか?

目次MySQL マルチバージョン同時実行1. マルチバージョン同時実行制御1. 一貫した読み取り2....

Ubuntu の仮想環境に Django をインストールする方法

Ubuntu コマンドライン ウィンドウで次の操作を実行します。 1. 仮想環境をインストールする...

Linux の高並列性とパフォーマンス最適化の落とし穴の紹介

目次序文Linux アプリケーション実行中に開いているファイルが多すぎる問題の分析と解決Linux ...

JS関数の継承について学ぶ記事

目次1. はじめに: 2. プロトタイプチェーン継承: 3. コンストラクタ継承の借用(オブジェクト...

Linux Tensorflow2.0のインストール問題を解決する

conda アップデート conda pip で tf-nightly-gpu-2.0-previ...

Linuxの基本コマンドmktempの詳しい説明

mptemp は安全な方法で一時ファイルまたはディレクトリを作成します。このコマンドの適用範囲: R...

MySQL 最適化の概要 - クエリエントリの合計数

1. COUNT(*) と COUNT(COL) COUNT(*)は通常、主キーに対してインデックス...

IDEA2021 tomcat10 サーブレットの新しいバージョンの落とし穴

私が学習していたときに使用していたバージョンは比較的新しいものであり、インターネット上のチュートリア...

フォームのデフォルトの送信方法を変更する方法

htmlのデフォルトの送信方法は、postではなくgetです。postに変更したい場合は、 meth...

Windows 環境での MySQL 8.0 のインストール、設定、アンインストール

ソフトウェアバージョンウィンドウズ: ウィンドウズ10 MySQL: mysql-8.0.17-wi...

CSSを使用して画像フレームアニメーションと曲線の動きを実装する

すべてのアニメーションの基本原理は、対応する画像を短時間で次々に表示し、視覚的に動いているように見せ...

MySQLデスクトップツールSQLyogのリソースとアクティベーション方法は、白黒のコマンドラインに別れを告げます

では、早速リソースについて見ていきましょう。 123WORDPRESS.COM ダウンロードSQLy...

Linux システムで jmeter を実行し、ローカル メモリを最適化する方法の詳細な説明

1. Linuxシステムにクロスシステムファイル転送ツールをインストールするルートユーザーのルートデ...

HTML ドキュメントに CSS を埋め込む一般的な 3 つの方法

HTMLでCSSを定義するには、埋め込み、リンク、インラインの3つの方法が一般的に使用されます。 1...

Dockerfile をベースに Zabbix 監視システムのコード例を作成する

forループを使用してZabbixイメージをコンテナにインポートします。 n を `ls *.tar...