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

将原始字符串存储在单独的变量中。使用原始字符串变量作为函数的输入,然后将结果值设置为不同的变量。

于 2012-06-29T22:08:47.453 回答