0

ステータスの選択に基づいて、JSON 文字列から結果をフィルタリングしようとしています。さらに詳しく説明します。以下のコードに関して、jsonstringにはjavascriptオブジェクト全体が含まれています。grep関数でステータスをフィルタリングし、結果をメインオブジェクト(jsonstring)に追加したので、新しいフィルタステータスでjavascriptオブジェクト全体を取得できます。しかし、このドロップダウンが呼び出されるたびに、最後に更新された JavaScript オブジェクトを取得していますが、この関数が呼び出されるたびに元の jsonstring が必要です。

function dropdownchange(jsonstring)
{
 var e = document.getElementById("documents_filter");
 var svalue = e.options[e.selectedIndex].value;

 if(svalue == "In Progress")
 {
  var docstatusfilter;
  docstatusfilter = $.grep(jsonstring.Apps.statuslist , function(el, i) {
           return el.DOCUMENT_STATUS === "In Progress"        
            });   
    jsonstring.Apps.statuslist = docstatusfilter;   
 }

 if(svalue == "Auth (Verified)")
 {
  var authstatus;
  authstatus = $.grep(jsonstring.Apps.statuslist , function(el, i) {
           return el.DOCUMENT_STATUS === "Auth (Verified)"          
            });    
   jsonstring.Apps.statuslist = authstatus;    
 }

}

この関数が初めて呼び出されたときは完璧に機能しますが、ドロップダウンを変更すると、jsonstringに前のレコードが含まれますが、この関数が呼び出されるたびに元のjsonstringが必要です..

誰でも何か考えがありますか?

ありがとう

4

2 に答える 2

1

jsonstring を別のオブジェクトにコピーし、そのオブジェクトを関数で使用するだけです。オブジェクトを複製する関数は次のとおりです-

function clone(obj) {
    var copy = jQuery.extend(true, {}, obj);
    return copy;
}

この関数を次のように呼び出します。

function dropdownchange(jsonstring)
{
var newJsonString = clone(jsonstring);
 var e = document.getElementById("documents_filter");
 var svalue = e.options[e.selectedIndex].value;
 ......
 .... 

newJsonStringの代わりに関数内で使用してくださいjsonstring

于 2012-06-29T22:25:37.320 に答える
0

Store the original string in a separate variable. Use the original string variable as your function's input and then set the resulting value to a different variable.

于 2012-06-29T22:08:47.453 に答える