使用array.push不能给出正确结构的数组(不能使用带有过滤功能的数组)

时间:2019-02-18 09:01:11

标签: javascript jquery arrays json ajax

我正在使用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 []中,就像下面的图片一样。 enter image description here

这就是我的预期外观,因此不能让我正确使用array.filter(不返回任何内容) enter image description here

我相信我使用了不正确的array.push,并且没有正确地将对象添加到数组,因此当我进行console.log记录时,它看起来很奇怪。但是我不知道如何解决这个问题,任何信息将不胜感激。

4 个答案:

答案 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定义为数组,然后使用它来推送值。