1

検索する必要のあるJSON配列があります。

[
{
      "Device_ID":"1",
      "Image":"HTC-One-X.png",
      "Manufacturer":"HTC",
      "Model":"One X",
      "Region":"GSM",
      "Type":"Phone"
   },
   {
      "Device_ID":"2",
      "Image":"Motorola-Xoom.png",
      "Manufacturer":"Motorola",
      "Model":"Xoom",
      "Region":"CDMA",
      "Type":"Tablet"
   },
   {
      "Device_ID":"8",
      "Image":"null",
      "Manufacturer":"Motorola",
      "Model":"Xoom 2",
      "Region":"CDMA",
      "Type":"Tablet"
   }
]

キーワードの使用:$_GET['keyword'];次のことができる必要があります。メーカーとモデルの合計値を検索します。モトローラXoom。次に、これに一致する値のセットについて、それらを変数に出力します。

例:キーワードがHTCの場合、配列を検索して次のように出力します。

$DeviceID = 1 $Image = HTC-One-X.png $Manufacturer = HTC $Model = One
X $Region = GSM $Type = Type

ただし、キーワードがMotorolaの場合、Motorolaを含むすべてのエントリを出力する必要があります。

ユーザーがキーワードを入力すると、すべてのJSON配列エントリのライブビューが出力されます。ただし、サーバーの負荷を軽減するために、これをユーザーのコンピューターで実行する必要があります。

誰かがこれについて行くための最良の方法を知っていますか?

4

2 に答える 2

1

JSONをフィルタリングするための関数は次のとおりです。データの表示はあなた次第です。

var devices = <your JSON array>;    

function filter(keyword, data) {
    var filteredArray = [], i, j;
    for (i = 0, j = data.length; i < j; i++) {
        if ((data[i].Manufacturer && data[i].Manufacturer.indexOf(keyword) !== -1) || (data[i].Model && data[i].Model.indexOf(keyword) !== -1)) {
            filteredArray.push(data[i]);
        }
    }
    return filteredArray;
}

// Example usage
var MotorolaDevices = filter('Motorola', devices);
于 2012-05-10T16:03:30.997 に答える
1

オプションセクションにメーカーの値が表示された選択ボックスがある場合は、次のように簡単です。

HTML:

<select id="selectionBox">
  <option>...</option>
</select>
<div id="outPut">
  output goes in here
</div>

Javascript:

var selectedValue = document.getElementById("selectionBox").value;
for(var i = 0; i < jsonObject.length; i++){
  if(jsonObject[i].Manufacturer === selectedValue){
    //considering your object is an array let's
    for(var key in jsonObject[i]){
      document.getElementById("outPut").innerHTML += jsonObject[i][key] + "</br>";
    }
  }
}

これにより、オブジェクト内のすべてが出力divに出力され、残りはスタイリングに依存します。

于 2012-05-10T15:33:41.190 に答える