首页 > 解决方案 > JSON过滤方法在IE上给出语法错误但在其他浏览器上工作正常

问题描述

嗨,我有一个嵌套的JSON,我想过滤空数量值的数据

这是原始 JSON -

var unfilteredJSON = {  
   "payload":{  
      "oldKeys":[  
         "125262"
      ],
      "keyData":[  
         {  
            "key":"123456",
            "products":[  
               {  
                  "prodId":"H1",
                  "qty":"1"
               },
               {  
                  "prodId":"H2",
                  "qty":""
               }
            ],
            "rushFee":"true"
         },
         {  
            "key":"234234",
            "products":[  
               {  
                  "prodId":"H1",
                  "qty":"1"
               },
               {  
                  "prodId":"H2",
                  "qty":""
               }
            ],
            "rushFee":"false"
         }
      ],
      "submit":"false"
   }
}

qty 键在对象中可以有空值。我想用 jQuery 方法过滤数据并删除带有空白数量的对象,这样 JSON 就可以看起来像这样 -

 {  
  "payload":{  
     "oldKeys":[  
        "125262"
     ],
     "keyData":[  
        {  
           "key":"123456",
           "products":[  
              {  
                 "prodId":"H1",
                 "qty":"1"
              },
           ],
           "rushFee":"true"
        },
        {  
           "key":"234234",
           "products":[  
              {  
                 "prodId":"H1",
                 "qty":"1"
              },
           ],
           "rushFee":"false"
        }
     ],
     "submit":"false"
  }
 }

所以,我使用了过滤器方法,它给了我上面的结果,它工作得很好——

   var unfilteredJSON = {"payload":{"oldKeys":["125262"],"keyData": 
  [{"key":"123456","products":[{"prodId":"H1","qty":"1"}, 
  {"prodId":"H2","qty":""}],"rushFee":"true"},{"key":"234234","products": 
  [{"prodId":"H1","qty":"1"}, 
  {"prodId":"H2","qty":""}],"rushFee":"false"}],"submit":"false"}};
   unfilteredJSON.payload.keyData.forEach(e => 
     e.products = e.products.filter(p => p.qty)
  );
   console.log(unfilteredJSON);

但由于这条线,它给了我 Internet Explorer 中的语法错误 -

 unfilteredJSON.payload.keyData.forEach(e => 
     e.products = e.products.filter(p => p.qty)
  );

我需要一种解决方法或一种不同的方法来使其在所有浏览器中都能正常工作。请帮忙。

标签: jqueryjson

解决方案


IE-10 不支持这种方法。你应该使用 jQuery.grep() 而不是 filter() 方法。

e.products = jQuery.grep(e,(p => p.qty))

推荐阅读