我正在使用array.push将JSON响应的内容推送到数组。但是这样做的时候,它给我的数组增加了一些奇怪的格式。结果,我不能使用filter函数来过滤数组。我在另一个测试案例中对一些json进行了硬编码,并成功使用了过滤器功能(请参见下面的console.logs比较图像)
JSON响应如下:
{
"posts": [
{
"id": 1702574719019,
"title": "Title 1",
"published_at": "2019-02-16T09:40:36-05:00",
"created_at": "2019-02-16T09:40:37-05:00",
"updated_at": "2019-02-16T09:40:38-05:00",
"vendor": "DZR"
},
{
"id": 1702574719019,
"title": "Title 2",
"published_at": "2019-02-16T09:40:36-05:00",
"created_at": "2019-02-16T09:40:37-05:00",
"updated_at": "2019-02-16T09:40:38-05:00",
"vendor": "DZR"
}
]
}
{
"posts": [
{
"id": 1702574719019,
"title": "Title 1",
"published_at": "2019-02-16T09:40:36-05:00",
"created_at": "2019-02-16T09:40:37-05:00",
"updated_at": "2019-02-16T09:40:38-05:00",
"vendor": "DZR"
},
{
"id": 1702574719019,
"title": "Title 2",
"published_at": "2019-02-16T09:40:36-05:00",
"created_at": "2019-02-16T09:40:37-05:00",
"updated_at": "2019-02-16T09:40:38-05:00",
"vendor": "DZR"
}
]
}
我如何处理这些数据如下(成功ajax回调的片段):
这是在我进行console.log记录时postList的外观。对象不在Array []中,就像下面的图片一样。
这就是我的预期外观,因此不能让我正确使用array.filter(不返回任何内容)
我相信我使用了不正确的array.push,并且没有正确地将对象添加到数组,因此当我进行console.log记录时,它看起来很奇怪。但是我不知道如何解决这个问题,任何信息将不胜感激。
答案 0 :(得分:2)
您使用的this
关键字指的是您当前所在的范围。因此,this
指的是在$.each
上调用的回调。
为了将您的值推送到postList
,只需使用以下内容:
postList.push(...)
代替
this.postList.push(...)
答案 1 :(得分:0)
不要在回调中使用它。
您可以通过
postList = data.posts;
答案 2 :(得分:0)
如果您使用
$.each( data.posts, function( i, value ) {
postList.push( value );
});
没有这个。效果很好
答案 3 :(得分:0)
尝试以下代码。
this.postList = [];
var t = this;
success: function(data) {
$.each( data.posts, function( i, value ) {
t.postList.push( value );
});
}
这里只是将this.postList定义为数组,然后使用它来推送值。