0

JSON ファイルを使用して、さまざまな変換用のドロップダウン メニューを作成しています。コンバーターはいくらか成長したので、検索バーを含めるオプションが欲しいです。

そのため、ユーザーは、「電気」などの「電流」カテゴリに移動する代わりに、ミリアンペアを検索できます。もう少し簡単にしたいと思います。

私のJSONには、ドロップダウンの名前と値の2つのフィールドしかありません。以下の例をご覧ください。値は、ミリアンペアがミリアンペアであり、他のすべてがキャメルケースを使用していることを理解する方法の文字列です。値が名前と異なる可能性があるため、このフィールドで検索を実行するのは適切ではないと思います。

このインスタンスの名前フィールドは Milliampere(mA) であるため、検索文字列がミリアンペア、ミリアンペア、さらにはミリアンペアである可能性が高いため、検索で文字列の一部を見て、大文字と小文字を区別せずに完全一致を実行できないようにする必要があります。 .

そこから次のステップは、そのページでドロップダウンを設定するか、可能なオプションが多数ある場合はそのリストを返すことです。

これはまったく可能ですか?もしそうなら、正しい方向に私を案内してもらえますか?

どうもありがとう!

    "current":[
    {
        "value" : "ampere",
        "name" : "Ampere(A)"
    },
    {
        "value" : "kiloAmpere",
        "name" : "Kiloampere(kA)"
    }]
4

1 に答える 1

1

この JS lib - DefiantJS (defiantjs.com) を使用できます。これは、新しいメソッド「検索」でグローバル オブジェクト JSON を拡張します。このメソッドを使用すると、次のように XPath 式を使用して JSON 構造を検索できます。

var data = {
       "current": [
          { "value": "ampere",      "name": "Ampere(A)" },
          { "value": "kiloAmpere",  "name": "Kiloampere(kA)" },
          { "value": "milliAmpere", "name": "milliAmpere" },
          { "value": "Milliampere", "name": "Milliampere" }
       ]
    },
    res = JSON.search( data, '//name[contains(translate(., "MA", "ma"), "millia")]/..' );

console.log( res[0].name );
console.log( res[1].name );

式の "translate" メソッドは、文字 "ma" の大文字と小文字のバージョンを含むように検索を拡張します。すべてのアルファベット文字をカバーしたい場合は、それらすべてを追加します。

これが実用的なフィドルです。
http://jsfiddle.net/hbi99/6ssS9/

于 2014-01-07T08:03:34.690 に答える