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データベースのバックアップを実装する方法

推薦する

異なる列を持つテーブルのクエリ結果のSQLマージ操作

2 つの異なるテーブルをクエリするには、結果をマージする必要があります。たとえば、table1 の列...

VMware Workstation Pro は Win10 ピュア バージョンのオペレーティング システムをインストールします

この記事では、VMware Workstation Pro で Win10 オペレーティング システ...

vue3 コンポーネントでの v-model の使用と詳細な説明

目次v-model 入力で双方向バインディングデータを使用するコンポーネント内の v-model他の...

JS を使用して要素が配列であるかどうかを判断する例

検証できるデータの種類は次のとおりです a = [1,2,3,4,5,6]とします。 b = [とし...

トリガーメソッドを使用して、ファイルタイプの入力をクリックせずにポップアップファイル選択ダイアログボックスを実現します。

トリガー メソッドを使用できます。JavaScript にはネイティブのトリガー関数はありません。自...

Dockerはコンテナに入るためにルートを使用する

まずdockerコンテナを実行しますルートユーザーとしてコマンドを実行する sudo docker ...

Debian システムでの自動パッケージ更新の問題を解決する方法

いつから始まったのかはわかりませんが、コンピュータの電源を入れてインターネットに接続するたびに、デー...

WeChat パブリック アカウントの録音ファイルを再生して保存します (amr ファイルを mp3 に変換)

目次オーディオトランスコーディングツール原理JAVE プロジェクトの問題このプロジェクトの特徴拡張機...

Linux ユーザー グループと権限の概要

ユーザーグループLinux では、すべてのユーザーはグループに属する必要があり、Linux には次の...

MySQLパーティションテーブルは月別に分類されています

目次テーブルを作成するデータベース ファイルを表示します。入れるクエリ消去補足:Mysqlは月テーブ...

Baotaパネルを再起動すると、「-ModuleNotFoundError: No module named 'geventwebsocket'」というメッセージが表示されます。

背景:サーバーがFlaskプロジェクトをデプロイし、python3をインストールしたため、再起動時に...

MySQL の制限使用法とページングクエリステートメントのパフォーマンス分析の詳細な説明

使用制限クエリ ステートメントを使用する場合、多くの場合、データの最初の数行または中間行を返す必要が...

JavaScript の一般的なステートメント ループ、判定、文字列から数値

目次1. スイッチ2. whileループ3. Do/Whileループ3. 文字列を数値に変換する1....

mysql5.7でbinlogを使用してデータを復元する方法

ステップ1: MySQLでbinlogが有効になっていることを確認する '%log_bin%...

CSS スタイルを変更してグレーの Web ページ (色なし、明るい白黒のみ) を実現するいくつかの方法

通常、清明節、国哀悼日、大地震の日、影響力のある偉人の死去または命日には、ウェブマスターとして、故人...