-2

配列javascriptを使用して名前と名前で検索するにはどうすればよいですか?そして、jeで始まるものを検索するたびに、div = resultは、Jeを含むすべての名前と名前(この場合はJessicaとJey)を表示します。
これはオンキーダウンイベントになりますよね?

<input type='text' id='filter' placeholder='search in array'>

ここで結果を印刷します:

<div id='result'></div>

これは私の配列です:

var datos = [ ['Jessica','Lyn',3],
         ['Jhon','Cin',5],
         ['Alison','Peage',1],
         ['Thor','zhov',12],
         ['Jey','hov',32]  
        ];
4

3 に答える 3

2
$("#filter").on('keyup', function () {
   var val = $(this).val();
   $("#result").empty();
   $.each(datos, function () {
      if (this[0].indexOf(val) >= 0 || this[1].indexOf(val) >= 0) {
         $("#result").append("<div>" + this[0] + ' ' + this[1] + "</div>");
      }
   });
});

http://jsfiddle.net/MqTBm/

于 2013-01-29T00:25:53.840 に答える
1

簡単な答えは、各要素をチェックする配列に対して for ループを実行することです。ただし、大きな配列がある場合、これは良い考えではありません。配列にインデックスを付けるには多くの方法があります。頭のてっぺんから考えて、インデックスとして 1 つの文字列として結合されたフィールドを格納する 2 番目の配列を作成し、次に配列参照を作成するかもしれません。したがって、参照オブジェクトを for ループできます。文字列比較でエントリを見つけます。実数配列へのインデックス参照を取得します。

于 2013-01-29T01:07:58.147 に答える
1
var $result = $('#result');

$('#filter').on('keyup', function () {
    var $fragment = $('<div />');
    var val = this.value.toLowerCase();
    $.each(datos, function (i, item) {console.log( item[0].toLowerCase().indexOf(val) );
        if ( item[0].toLowerCase().indexOf(val) == 0 ) {
            $fragment.append('<p>' + item[0] + ' ' + item[1] + '</p>');
        }
    });
    $result.html( $fragment.children() );
});

これがフィドルです:http://jsfiddle.net/GkWGk/

于 2013-01-29T00:27:35.477 に答える