jquery - 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)
);
我需要一种解决方法或一种不同的方法来使其在所有浏览器中都能正常工作。请帮忙。
解决方案
IE-10 不支持这种方法。你应该使用 jQuery.grep() 而不是 filter() 方法。
e.products = jQuery.grep(e,(p => p.qty))
推荐阅读
- python - 使用 beautifulsoup 从 wikipedia 中抓取整个表格,然后加载到 pandas
- amazon-web-services - AWS CodeDeploy:如何检查当前实例是否是部署中的最后一个实例并创建 Cloudfront 失效?
- c - 你能告诉我这里发生了什么吗
- javascript - 协助设置 Gatsby 和 WordPress
- javascript - 如何在羽毛中创建异步超时错误处理程序?
- mongodb - 更新 MongoDB 中的嵌入式文档是手动过程吗?
- django - 用静态日期注释 - Django
- r - 为什么 broom::tidy 偶尔会使用 speedglm 返回错误类型的“估计”?
- aframe - 在 A 帧中进入 vr 模式时光标消失
- java - 如何显示按最喜欢的评论过滤的recyclerview项目?