1

検索ボックスがあり、そこに入力されたものが次のように保存されているとしましょう。

var search_input = $(this).val();

この値で配列を検索するにはどうすればよいですか?

var devices = [{"Device_ID":"43","Image":"Amazon-Kindle-Fire.png","Manufacturer":"Amazon","Model":"Kindle Fire","Type":"Tablet"},{"Device_ID":"44","Image":"Apple-iPad.png","Manufacturer":"Apple","Model":"iPad","Type":"Tablet"}]

たとえば、search_input 変数に Amazon や Kindle などがある場合、配列を検索して以下を出力する必要があります。同じことが、入力されたものや配列内の何かにも当てはまります

<div id="device">43</div>
<div id="image">Amazon-Kindle-Fire.png</div>
<div id="name">Amazon Kindle Fire</div>
4

4 に答える 4

6

ループ内の単純なループ

var devices = [{"Device_ID":"43","Image":"Amazon-Kindle-Fire.png","Manufacturer":"Amazon","Model":"Kindle Fire","Type":"Tablet"},{"Device_ID":"44","Image":"Apple-iPad.png","Manufacturer":"Apple","Model":"iPad","Type":"Tablet"}];

function findItem (term) {
    var items = [];
    for (var i=0;i<devices.length;i++) {
        var item = devices[i];
        for (var prop in item) {
            var detail = item[prop].toString().toLowerCase();
            if (detail.indexOf(term)>-1) {
                items.push(item);
                break;               
            }
        }
    }
    return items;
}

console.log( findItem("amazon") );  //returns one item
console.log( findItem("kindle") );  //returns one item
console.log( findItem("apple") );   //returns one item
console.log( findItem("tablet") );  //returns two items
console.log( findItem("nerd") );    //returns zero items
​

jsFiddle

于 2012-10-05T14:28:24.510 に答える
1

もう 1 つの方法は、キーが search_input と比較する値であるマップ (JavaScript オブジェクト) で配列を置き換えることです。そうすれば、キーを調べてオブジェクトを取得するだけです。

var devices = {"Amazon Kindle": {"Device_ID":"43","Image":"Amazon-Kindle-Fire.png","Manufacturer":"Amazon","Model":"Kindle Fire","Type":"Tablet"},{"Device_ID":"44","Image":"Apple-iPad.png","Manufacturer":"Apple","Model":"iPad","Type":"Tablet"}}

2 番目のステップでは、JavaScript オブジェクトを XML に変換します。これについては SO here で既に回答されています JavaScript オブジェクトを XML にシリアル化する最良の方法は何ですか?

于 2012-10-05T14:23:12.360 に答える
1

私はあなたが必要だと思います:

jQuery.inArray()

http://api.jquery.com/jQuery.inArray/

于 2012-10-05T14:17:37.603 に答える