2

次の行に沿ってJavaScriptオブジェクトの配列の検索関数を作成しました。

  1. ユーザーがフォーム入力ボックスにテキストを入力します
  2. オブジェクト配列をループします
  3. オブジェクトテキストに入力テキストが含まれている場合は、オブジェクトを別の「フィルタリングされた」配列にプッシュします
  4. フィルタされた配列を表示する

これは、javascriptに組み込まれている文字列search()関数を使用して正常に機能します。

if(objectarray[i].text.search(userstring)>=0){  
    filteredarray.push(currentobject)  
};

ここで、クライアントは次の行に沿ってより高度な検索を実行したいと考えています。

テキストに(x1またはx2)および(x3またはx4またはx5)が含まれているオブジェクトを検索する

xのそれぞれが単語であり、上記の条件が満たされたときにオブジェクトがフィルター処理されたコレクションにプッシュされる場合。

この種の複雑なブール式を処理できる組み込み関数はありますか?

4

1 に答える 1

2

この質問への回答を使用する

私はこれを取ります:

var usersearchstring = "(x1 or x2) and (x3 or x4 or x5)";

そして、これを使用して変換します。

usersearchstring = usersearchstring.replace(/[-\w]+/g, "targetstring.toLowerCase().search('$&')>=0");

これに:

(targetstring.toLowerCase().search('x1')>=0 or targetstring.toLowerCase().search('x2')>=0) and (targetstring.toLowerCase().search('x3')>=0 or targetstring.toLowerCase().search('x4')>=0 or targetstring.toLowerCase().search('x5')>=0)

検索関数によって返される数値応答をブール値に変換するには、NB'>=0'が必要です。

于 2012-05-03T09:42:57.150 に答える