フロントエンド JavaScript でローカルあいまい検索機能を実装する方法の例

フロントエンド JavaScript でローカルあいまい検索機能を実装する方法の例

1. プロジェクトの見通し

実際の開発では Vue や React がますます広く使用されるようになり、フロントエンドで処理されるデータはますます多くなっています。この記事の主な目的は、サーバーから返されたデータを処理し、条件に応じてファジークエリを実行して、サーバーに送信されるリクエストの数を減らし、パフォーマンスとユーザーエクスペリエンスを向上させることです。以下は、ファジークエリ機能を実装する簡単なデモです。

テストデータは次のとおりです。

varデータ = [{
            "title": "失恋から立ち直るのにどれくらい時間がかかりますか?",
            "タイトル画像": "https://img.doutuimao.net/dtmimg/b7c9ec393414982682e5a477eb995b55",
            "desc": "食品と飲料が失恋から立ち直るのにどれくらい時間がかかるかをテスト",
            "id": "2",
            「番号」: 951357,
            "フラグ": "01"
    },
    {
            "title": "あなたのコケティッシュ指数はどれくらいですか?",
            "タイトル画像": "https://img.doutuimao.net/dtmimg/60d8ed86d1f72357c194506270c72ac1",
            "desc": "コケティッシュな振る舞いができる女性は最も幸運です。コケティッシュな振る舞いが上手ですか? コケティッシュな振る舞いをするとき、あなたはどれくらい魅力的ですか? ぜひテストを受けてください!",
            "id": "3",
            「番号」: 963258,
            "フラグ": "01"
    },
    {
            "title": "将来どのように結婚しますか?"
            "タイトル画像": "https://img.doutuimao.net/dtmimg/538632e75159ce8e586778d289c66a11",
            "desc": "多くの人が将来の結婚式の方法を楽しみにしていると思います。将来どのように結婚するか知りたいですか?",
            "id": "4",
            「番号」: 879564,
            "フラグ": "01"
    },
]

2. 知識ポイント

Object.assign() の使用法

Object.assign メソッドは、ソース オブジェクト (source) のすべての列挙可能なプロパティをターゲット オブジェクト (target) にコピーするために使用されます。パラメータとして少なくとも 2 つのオブジェクトが必要です。最初のパラメータはターゲット オブジェクトであり、後続のパラメータはすべてソース オブジェクトです。

// 元の配列を処理する let arrnew = data.map((item, index) => {
    オブジェクトを返します。代入({}, {
            'desc': アイテム.desc、
    })
})

filter() メソッド

filter() メソッドは配列要素をフィルタリングするために使用されます。このメソッドは、指定された関数によって実装されたテストに合格したすべての要素を含む新しい配列を作成します。 filter() は空の配列を検出せず、元の配列を変更しません。

indexOf() ファジークエリ

indexOf() メソッドは、文字列内で指定された文字列値が最初に出現する位置を返します。取得する文字列値が表示されない場合、メソッドは -1 を返します。 filter() メソッドと組み合わせることで、配列に入力値が含まれているかどうかを検出し、それを返すことができます。

var newData = arrnew.filter(item => {
    if (item.desc.indexOf(value) > -1) { //indexOfメソッドで、xxx.indexOf("")が0の値を返す場合
            返品商品
    }
    新しいデータを返す
})

完全な DEMO コードは次のとおりです。

<div class="wrap">
        <input type="text" id="デモ">
        <ul id="ニュースボックス">
        </ul>
</div>
関数create() {
        var 値 = 入力値;
        var html = "";
        arrnew = data.map((item, index) => { とします。
                オブジェクトを返します。代入({}, {
                        'desc': アイテム.desc、
                })
        })

        var newData = arrnew.filter(item => {
                if (item.desc.indexOf(value) > -1) { //indexOfメソッドで、xxx.indexOf("")が0の値を返す場合
                        返品商品
                }
                新しいデータを返す
        })


        (newData.length > 0) の場合 {
                (var i = 0; i < newData.length; i++) {
                        html += `<li>${newData[i].desc}</li>`
                }
        } それ以外 {
                html += `<li>データなし</li>`
        }
        ul.innerHTML = html;
}
作成()
input.onchange = 関数(e) {
        作成()
}

要約する

JavaScript でローカル ファジー検索機能を実装する方法についての記事はこれで終わりです。より関連性の高い JS ローカル ファジー検索コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • フロントエンドのページング機能を実装するJavaScript
  • JavaScriptフロントエンドが画像圧縮機能を実装
  • JSはフロントエンドページの検索機能を実装します
  • 一般的な JavaScript フロントエンド手書き関数 10 個を共有する

<<:  さまざまなSQL結合を簡単に学ぶ

>>:  Linux lseek関数の使い方の詳しい説明

推薦する

axiosリクエストをvueでカプセル化する方法

実際、Vueでaxiosをカプセル化するのは非常に簡単ですまず、srcパスにhttpフォルダを作成し...

nginx ssl を設定して https アクセスを実装する手順 (初心者向け)

序文サーバーを展開した後、私は大きな喜びを感じながら自分の Web サイトにアクセスし、見たものすべ...

HTML ベース URL タグ

その機能はグローバル スタイルを設定することです。その後の相対パスはこれに基づきます: <im...

docker-swarm をベースにした継続的インテグレーション クラスタ サービスの構築の詳細な説明

序文この記事は私自身の製作過程の簡単な記録です。練習中に質問があれば、一緒に話し合うことができます。...

ウェブフロントエンド開発者が知っておくべき 9 つの実用的な CSS プロパティ

1. 角を丸くする今日の Web デザインは、常に最新の開発テクノロジーに追随しており、HTML5 ...

jsは双方向データバインディング(アクセサ監視)を実現します

この記事の例では、双方向データバインディングを実現するためのjsの具体的なコードを参考までに共有して...

ウェブページのエンコードにおける GB2312、GBK、UTF-8 の違い

まず、GB2312、GBK、UTF-8 はすべて文字エンコーディングであることを理解する必要がありま...

mysql バックアップ戦略の実装 (フルバックアップ + 増分バックアップ)

目次設計シナリオ技術的なポイントサーバー情報準備フルバックアップスクリプト(Mysql-FullyB...

HTML でよく使われるメタ百科事典 (推奨)

メタタグは、HTML言語のヘッド領域にある補助タグです。HTML文書のヘッダーにあるヘッドタグとタイ...

MySQL のロックの仕組みと使用法の分析

この記事では、例を使用して MySQL のロック メカニズムと使用方法を説明します。ご参考までに、詳...

フォーム要素とプロンプトテキストが揃っていない問題

最近のプロジェクトでは、多くのフォーム、特にチェックボックスとラジオボタンの作成が含まれます。しかし...

MySQLのUPDATE文の落とし穴を記録する

背景最近、オンライン操作中に DML ステートメントを実行しました。これは絶対確実だと思っていました...

JavaScript で配列遅延評価ライブラリを実装する方法

目次概要達成方法具体的な実装評価関数の終了を決定する生成関数の範囲変換関数マップフィルター割り込み機...

Typescriptを使用してWeChatミニプログラムを開発するための詳細な手順

Typescript の利点については詳しく説明する必要はありません。ご興味があれば、(https:...

Baidu Maps を Web ページに埋め込み、Baidu Maps API を使用してマップをカスタマイズする詳細な手順

ウェブページにBaiduマップを挿入するBaidu Maps を自分の Web ページに追加したい場...