0

以下のJSONがあり、「ルール」オブジェクトを反復処理する必要があります。最後のルール以上のものにアクセスできるようにするために、それを正しく呼び出すことは決してできないようです。

誰かが私を正しい方向に向けることができれば、私はそれをいただければ幸いです

var rules = [{
"rule":[{
    "fields":["CASE.PROSECUTED_FLAG","CASE.RESTITUTION_SIGNED"],
    "conditions":["N","Y"],
    "actions":"required",
    "action_fields":["test1","test2"]
}],
"rule":[{
    "fields":["CASE.PROSECUTED_FLAG","CASE.RESTITUTION_SIGNED"],
    "conditions":["N","N"],
    "actions": "required",
    "action_fields": ["test3", "test4"]
}],
 "rule":[{
    "fields":["CASE.PROSECUTED_FLAG"],
    "conditions":["Y"],
    "actions": "required",
    "action_fields": ["test5"]
}]
}];




function rulesControl() {
    alert(rules.length);
    for (var rule in rules) {

    var xfields = rules[rule].rule.fields;
    var conditions = rules[rule].rule.conditions;
    var actions = rules[rule].rule.actions;
    var action_fields = rules[rule].rule.action_fields;

    //test the fields (if success, mark them, else clear them)
    if (validateRule(xfields, conditions)) {
        rulesAction(actions, action_fields);
    } else {
        ruleActionMakeClear(action_fields);
    }
    }
}
4

3 に答える 3

1

これは、そのJSONが奇妙に形成されているためです。これは、オブジェクトを含むオブジェクトのプロパティ「ルール」を3回定義し、本質的にはそれ自体を上書きします。これは、これらすべての単一アイテム配列をオブジェクトにネストするのではなく、おそらくあなたが求めているものです。

var rules = [
{"rule":
    {
    "fields":["CASE.PROSECUTED_FLAG","CASE.RESTITUTION_SIGNED"],
    "conditions":["N","Y"],
    "actions":"required",
    "action_fields":["test1","test2"]
    }
},
{"rule":
    {
    "fields":["CASE.PROSECUTED_FLAG","CASE.RESTITUTION_SIGNED"],
    "conditions":["N","N"],
    "actions": "required",
    "action_fields": ["test3", "test4"]
    }
},
{"rule":
    {
    "fields":["CASE.PROSECUTED_FLAG"],
    "conditions":["Y"],
    "actions": "required",
    "action_fields": ["test5"]
    }
}
];

これには次のようにアクセスします。

rules[i].rule.PROPERTY

ここで、iはルールのインデックス値であり、PROPERTYはフィールド、条件などです。

于 2012-07-26T19:29:16.107 に答える
1

あなたは巻き毛が欠けています...

var rules = [{"rule":[{}]
      },{  // You are missing this curly braces.
      "rule":[{}]},
      {"rule":[{}]}];
于 2012-07-26T19:30:31.853 に答える
0

最後のルールのみruleが表示される理由は、ルールが相互に上書きされ、最後のルールが残っているためです。配列を使用してルールを格納することをお勧めします。

于 2012-07-26T19:28:37.273 に答える