0

ここに私のJavaScriptがあります:

var json = '{"GetReportIdResult":[{"bulan":"4","total":"1728","type":"CHEESE1K","uang":"8796383"},{"bulan":"4","total":"572476","type":"ESL","uang":"5863408410"},{"bulan":"4","total":"33507","type":"WHP","uang":"235653242"},{"bulan":"5","total":"4761","type":"CHEESE1K","uang":"134877865"},{"bulan":"5","total":"245867","type":"UHT","uang":"1446787280"},{"bulan":"5","total":"47974","type":"WHP","uang":"631929807"},{"bulan":"6","total":"5762","type":"CHEESE1K","uang":"293393832"},{"bulan":"6","total":"236803","type":"UHT","uang":"2219506085"},{"bulan":"6","total":"24853","type":"WHP","uang":"386175022"}]}';
obj = JSON.parse(json);
var arrayobj = obj.GetReportIdResult.length;
alert (arrayobj);

type同じ値がいくつあるかを数えたいbulan(たとえば、type= CHEESE1KUHT、= 4ESL に3 つある)bulan

どうやってするか?

4

3 に答える 3

2

"bulan":"6"JSON にはまだタイプミスがあります。最初の 2 つのオブジェクトの間にコンマが 2 つ並んでいます。しかし、あなたがそれを修正すると仮定すると...

特定の値の異なるタイプをカウントする方法を尋ねている場合は、次のbulanようにすることができます。

function countTypesForBulan(resultArray, bulanVal) {
   var i,
       types,
       count = 0;
   for (i=0, types = {}; i < resultArray.length; i++)
      if (resultArray[i].bulan === bulanVal && !types[resultArray[i].type]) {
         types[resultArray[i].type] = true;
         count++;
      }
   return count;
}

console.log( countTypesForBulan(obj.GetReportIdResult, "4") );  // logs 3

上記は配列をループして特定の bulan 値を探し、見つかった場合は関連付けられた型を既に認識しているかどうかを確認します。そうでない場合は、それをtypesオブジェクトに追加し、カウンターをインクリメントします。

デモ: http://jsfiddle.net/pAWrT/

于 2012-07-04T04:43:41.877 に答える
1

これにより、各値mapのカウントを含むオブジェクトが得られます。bulanたとえば、map['4'].count3 が返されます。

var i, row, arr = obj.GetReportIdResult, map = {};
for (i = 0; i < arr.length; i++) {
    row = arr[i];
    map[row.bulan] = map[row.bulan] || {count: 0};
    if (map[row.bulan][row.type] === undefined) {
        map[row.bulan][row.type] = row.type;
        map[row.bulan]['count'] += 1;
    }
}
console.log (JSON.stringify(map));​

ここでJSFiddle 。

于 2012-07-04T04:46:14.700 に答える
1

まず、JSON を文字列に入れます。そうしないと、サンプル コードが機能しません。

var json = '{"GetReportIdResult":[{"bulan":"4","total":"1728","type":"CHEESE1K","uang":"8796383"},{"bulan":" 4","total":"572476","type":"ESL","uang":"5863408410"},{"bulan":"4","total":"33507","type":" WHP","uang":"235653242"},{"bulan":"5","total":"4761","type":"CHEESE1K","uang":"134877865"},{"bulan" :"5","total":"245867","type":"UHT","uang":"1446787280"},{"bulan":"5","total":"47974","type" :"WHP","uang":"631929807"},{"bulan":"6","total":"5762","type":"CHEESE1K","uang":"293393832"},,{"ブラン" ":"6","total":"236803","type":"UHT","uang":"2219506085"},{"bulan":"6","total":"2485​​3","type ":"WHP","uang":"386175022"}]}';6","合計":"2485​​3","タイプ":"WHP","uang":"386175022"}]}';6","合計":"2485​​3","タイプ":"WHP","uang":"386175022"}]}';

for次に、変数またはハッシュマップで反復してカウントします。

は配列であるためGetReportIdResult、次のことができます。

for( var i : obj.GetReportIdResult ){
    obj.GetReportIdResult[i] ... // Use at will.
于 2012-07-04T04:30:06.107 に答える