【问题标题】:JSON filter method giving syntax error on IE but works fine on other browsersJSON过滤方法在IE上给出语法错误但在其他浏览器上工作正常
【发布时间】:2018-10-15 01:10:26
【问题描述】:

您好,我有一个嵌套的 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)
  );

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

【问题讨论】:

    标签: jquery json


    【解决方案1】:

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

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

    【讨论】:

    • 嗨它不工作它仍然给我一个错误。 IE 不支持=>。你能建议一些其他的方法吗?我目前正在使用 IE11
    • 是的!这是语法错误。我认为过滤方法没有问题,但=>。你能建议另一种方法吗?
    • 这会很有帮助,请点击此链接并使用 jQuery.grep() api.jquery.com/jquery.grep重新排列您的代码
    • 确定你应该以简单的方式编写你的匿名函数(回调),例如函数(){}
    • 更改回调格式。你正在使用 lambda 表达式,你应该使用简单的格式。试试
    猜你喜欢
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多