0

このjsonで特定の値を検索しようとしています。

「NH」などの State 値で検索して、MaintenancePercentage と OfficePercentage を取得したいと考えています。

payrollDefaults.State をループしてみましたが、何も返されません。

var payrollDefaults =
    [
        {
            "State": "NH",
            "MaintenancePercentage": 21.45,
            "OfficePercentage": 22.56
        },
        {
            "State": "NC",
            "MaintenancePercentage": 21.79,
            "OfficePercentage": 22.41
        },
        {
            "State": "OH",
            "MaintenancePercentage": 21.33,
            "OfficePercentage": 22.25
        },
        {
            "State": "RI",
            "MaintenancePercentage": 23.04,
            "OfficePercentage": 23.22
        },
        {
            "State": "SC",
            "MaintenancePercentage": 21.31,
            "OfficePercentage": 31.33
        },
        {
            "State": "TX",
            "MaintenancePercentage": 35.6,
            "OfficePercentage": 24.48
        },
        {
            "State": "VA",
            "MaintenancePercentage": 32.32,
            "OfficePercentage": 30.47
        },
        {
            "State": "AL",
            "MaintenancePercentage": 13.33,
            "OfficePercentage": 12.42
        },
        {
            "State": "CA",
            "MaintenancePercentage": 49.37,
            "OfficePercentage": 59.67
        },
        {
            "State": "FL",
            "MaintenancePercentage": 34.62,
            "OfficePercentage": 31.06
        },
        {
            "State": "GA",
            "MaintenancePercentage": 35.55,
            "OfficePercentage": 30.29
        },
        {
            "State": "IN",
            "MaintenancePercentage": 33.45,
            "OfficePercentage": 30.69
        },
        {
            "State": "MA",
            "MaintenancePercentage": 32.9,
            "OfficePercentage": 29.34
        },
        {
            "State": "MI",
            "MaintenancePercentage": 34.95,
            "OfficePercentage": 29.46
        },
        {
            "State": "MT",
            "MaintenancePercentage": 35.91,
            "OfficePercentage": 30.02
        }
    ]

編集:

これを文字列からJSONに変換することになりました。

var json = $.parseJSON(payrollDefaults);

4

8 に答える 8

0
$.each(payrollDefaults,function(key,val){
  if(val.state == "NH"){
   console.log(val.MaintenancePercentage);
   console.log(val.OfficePercentage);
  }

});

これはあなたを助けるはずです

于 2013-10-18T16:04:53.767 に答える
0

lodash.jsの find の使用

_.find(payrollDefaults, {State: 'NH'});
>>> {
        "State": "NH",
        "MaintenancePercentage": 21.45,
        "OfficePercentage": 22.56
    }
于 2013-10-18T16:04:54.673 に答える
0

以下の機能を試してください。

function findByState(givenState) {
    var result = [];
    for(p in payrollDefaults) {
        if (p.State === givenState) {
            result.push(p);
        }
    }

    return result;
}
于 2013-10-18T16:05:13.080 に答える
0

これでうまくいくはずです...

http://jsfiddle.net/6zn7H/

function findState(state) {
    for(var i =0, l = payrollDefaults.length; i < l; i++){
        var value = payrollDefaults[i];
        if(value.State === state){
            return value;
        }
    }
}

また、このループは反復ごとではなく 1 回だけ長さを評価するため、効率が向上することにも注意してください。

于 2013-10-18T16:04:31.907 に答える
0

配列のインデックスを提供する必要がありpayrollDefaultsます。そうしないと、プログラムは値を取得する特定のオブジェクトを認識できませんState

例として、すべてのStateプロパティをループしてコンソールに値を出力する方法を次に示します。

for (var i = 0, l = payrollDefaults.length; i < l; i += 1) {
    console.log(payrollDefaults[i].State);
}

[i]と、配列内の特定のオブジェクトを参照する方法に注意してください。

あなたが見逃していたものを理解するのに役立つことを願っています!

于 2013-10-18T16:03:21.807 に答える
0

これを試してみてください:- http://jsfiddle.net/ba5ZQ/1/

JS:-

var arr = jQuery.grep(payrollDefaults, function( a ) {
  return a.State =="NH";
});

console.log(arr);
于 2013-10-18T16:11:09.733 に答える
0

特定の州を検索する方法は次のとおりです

function GetMaintainancePercentage(state) {
    for (var i = 0; i < payrollDefaults.length; i++) {
        if (payrollDefaults[i]["State"] == state) {
            alert('Maintainance Percenatge is ' + payrollDefaults[i]["MaintenancePercentage"]);
        }
    }
}

ここにデモがあります

于 2013-10-18T16:06:29.307 に答える