2010-12-28 6 views
0

jsonの基準から最初の項目のiを0に設定したいとします。この場合、基準が緑の場合は3から始まります。基準=青の場合は2で始まります。それが0か1かを問わず、合計を数える方法も設定する必要があります例えば、緑色の合計は2、青色= 1、赤色= 2 ...事前に感謝!json基準から最初の項目のiを0に設定する方法

var myBox_html =""; 
var i = 0; 

function createDiv(1x,2x,3x) { 
    A = '<something>'+1x; 
    B = '<something>'+2x; 
    C = '<something>'+3x; 

    myBox_html += '<something-more>'+A+B+C; 
} 

criteria // is a parameter from url, in this case means green 

get_it = function(doc) { 
    var jsonData = eval('(' + doc + ')');   
    for (var i=0; i<jsonvar.name.length; i++) { 
     var 1x = jsonvar.name[i].1; 
     var 2x = jsonvar.name[i].2; 
     var 3x = jsonvar.name[i].3; 

     if (1x == criteria){              
      var Div = createDiv(1x,2x,3x);  
     } else {null} 
    } 

    document.getElementById("myBox").innerHTML = myBox_html; 
}   
get_it(); 

JSONは次のようになります。

1:サーバー側で基準 - グループ化されたJSONレスポンスを生成

var jsonvar = {"name":[{"1":"red","2":"round","3":"fruit"},{"1":"red","2":"squared","3":"box"},{"1":"blue","2":"squared","3":"box"},{"1":"green","2":"squared","3":"box"},{"1":"green","2":"pear","3":"fruit"}]};

答えて

0

は、いくつかのソリューションを考えてみましょう。例えば。

var jsonvar = '{"name":{ 
    "red": [{"1":"red","2":"round","3":"fruit"}, {"1":"red","2":"squared","3":"box"}], 
    "blue": [{"1":"blue","2":"squared","3":"box"}], 
    "green":[{"1":"green","2":"squared","3":"box"}, {"1":"green","2":"pear","3":"fruit"}]}}';

2:上記で定義した条件グループ化された形式にJSON配列を変換します。このようなグループ化のサンプルルーチンを次に示します。

function group_elements (arr) { 
    var result = {}; 
    for (var i=0; i < arr.length; i++) { 
     if (!result[arr[i][1]]) { 
      result[arr[i][1]] = []; 
     } 
     result[arr[i][1]].push(arr[i]); 
    } 
    return result; 
} 

両方のソリューションでは、フィルタリングされたレコードのみを繰り返し、グループの長さをカウントできます。

関連する問題