如何在Javascript中的对象数组的最后一个对象之后追加几个新对象?

时间:2015-02-25 22:01:24

标签: javascript arrays json javascript-objects

我正在制作一个由wordpress制作的新闻网站的移动应用程序(使用Ionic Framework)。 从站点获取json文件。我必须使用wordpress网站的一些新帖子获取相同的重复json数据,以便我的应用在用户继续滚动时显示新消息。所以我必须将这些新的几个帖子对象添加/附加到之前的帖子中#34;对象数组。这是传统的wordpress帖子json文件对象的样子。

{
    "status": "ok",
    "count": 2,
    "count_total": 4231,
    "pages": 2116,
    "posts": [
        {
        "id": 62296,
        "type": "post",
        "slug": "any slug",
        "url": "any url",
        "status": "publish",
        "title": "any title",
        "title_plain": "any title",
        "content": "any content",
        "excerpt": "any excerpt",
        "date": "2015-02-26 02:08:57",
        "modified": "2015-02-26 02:09:59",
        "categories": [
            {
                "id": 1015,
                "slug": "any slug",
                "title": "any title",
                "description": "",
                "parent": 0,
                "post_count": 7
            }
        ],
        "tags": [
            {
                "id": 1180,
                "slug": "any slug",
                "title": "any title",
                "description": "",
                "post_count": 6
            },
            {
                "id": 1179,
                "slug": "religion",
                "title": "religion",
                "description": "",
                "post_count": 5
            },
            {
                "id": 1209,
                "slug": "any slug",
                "title": "any title",
                "description": "",
                "post_count": 4
            }
        ],
        "author": {
            "id": 1,
            "slug": "newsdesk",
            "name": "NewsDesk",
            "first_name": "",
            "last_name": "",
            "nickname": "NewsDesk",
            "url": "",
            "description": ""
        },
        "comments": [],
        "attachments": [
            {
                "id": 44930,
                "url": "anything appropriate",
                "slug": "anything appropriate",
                "title": "anything appropriate",
                "description": "",
                "caption": "",
                "parent": 62296,
                "mime_type": "image/jpeg",
                "images": {
                    "full": {
                        "url": "anything appropriate",
                        "width": 290,
                        "height": 147
                    },
                    "thumbnail": {
                        "url": "anything appropriate",
                        "width": 150,
                        "height": 147
                    },
                    "medium": {
                        "url": "anything appropriate",
                        "width": 290,
                        "height": 147
                    },
                    "large": {
                        "url": "anything appropriate",
                        "width": 290,
                        "height": 147
                    },
                    "tie-small": {
                        "url": "anything appropriate",
                        "width": 55,
                        "height": 55
                    },
                    "tie-medium": {
                        "url": "anything appropriate",
                        "width": 272,
                        "height": 125
                    },
                    "tie-large": {
                        "url": "anything appropriate",
                        "width": 290,
                        "height": 147
                    },
                    "slider": {
                        "url": "anything appropriate",
                        "width": 290,
                        "height": 147
                    },
                    "big-slider": {
                        "url": "anything appropriate",
                        "width": 290,
                        "height": 147
                    }
                }
            }
        ],
        "comment_count": 0,
        "comment_status": "open",
        "thumbnail": "anything appropriate": {
            "views": [
                "2"
            ],
            "taq_review_button_text": [
                ""
            ],
            "taq_review_button_size": [
                "medium"
            ],
            "taq_review_button_shape": [
                "square"
            ],
            "taq_review_button_color": [
                "#c7c7c7"
            ],
            "taq_button_icon": [
                "fa fa-check"
            ],
            "taq_review_button_type": [
                "flat"
            ],
            "taq_review_button_url": [
                ""
            ],
            "taq_review_title": [
                ""
            ],
            "taq_review_position": [
                ""
            ],
            "taq_review_style": [
                "stars"
            ],
            "taq_review_summary": [
                ""
            ],
            "taq_review_total": [
                ""
            ],
            "tie_hide_meta": [
                ""
            ],
            "tie_hide_author": [
                ""
            ],
            "tie_hide_share": [
                ""
            ],
            "tie_hide_related": [
                ""
            ],
            "tie_hide_check_also": [
                ""
            ],
            "tie_sidebar_pos": [
                "default"
            ],
            "tie_sidebar_post": [
                "category lifestyle"
            ],
            "tie_post_head": [
                "none"
            ],
            "tie_post_slider": [
                "59602"
            ],
            "tie_googlemap_url": [
                ""
            ],
            "tie_video_url": [
                ""
            ],
            "tie_video_self": [
                ""
            ],
            "tie_embed_code": [
                ""
            ],
            "tie_audio_m4a": [
                ""
            ],
            "tie_audio_mp3": [
                ""
            ],
            "tie_audio_oga": [
                ""
            ],
            "tie_audio_soundcloud": [
                ""
            ],
            "tie_banner_above": [
                ""
            ],
            "tie_banner_below": [
                ""
            ],
            "tie_posts_num": [
                ""
            ],
            "post_color": [
                ""
            ],
            "post_background": [
                "anything appropriate"
            ],
            "tie_views": [
                "2"
            ]
        },
        "thumbnail_size": "thumbnail",
        "thumbnail_images": {
            "full": {
                "url": "anything appropriate",
                "width": 290,
                "height": 147
            },
            "thumbnail": {
                "url": "anything appropriate",
                "width": 150,
                "height": 147
            },
            "medium": {
                "url": "anything appropriate",
                "width": 290,
                "height": 147
            },
            "large": {
                "url": "anything appropriate",
                "width": 290,
                "height": 147
            },
            "tie-small": {
                "url": "anything appropriate",
                "width": 55,
                "height": 55
            },
            "tie-medium": {
                "url": "anything appropriate",
                "width": 272,
                "height": 125
            },
            "tie-large": {
                "url": "anything appropriate",
                "width": 290,
                "height": 147
            },
            "slider": {
                "url": "anything appropriate",
                "width": 290,
                "height": 147
            },
            "big-slider": {
                "url": "anything appropriate",
                "width": 290,
                "height": 147
            }
        }
    },
    {
       //This is another "posts" object
    }
]
}

我对javascript不太熟悉。所以它给了我真正的痛苦,推动新的帖子附加到相同的帖子"阵列。

我可以保存"帖子"数组到我的应用程序的变量。但是,在最后一个帖子对象进入"帖子"之后,不能追加新的提取对象。阵列。

3 个答案:

答案 0 :(得分:2)

var news = {
  "status": "ok",
  "count": 2,
  "count_total": 4231,
  "pages": 2116,
  "posts": [{
    "id": 62296,
    "type": "post",
    "slug": "any slug",
    "url": "any url",
    "status": "publish",
    "title": "any title",
    "title_plain": "any title",
    "content": "any content",
    "excerpt": "any excerpt",
    "date": "2015-02-26 02:08:57",
    "modified": "2015-02-26 02:09:59",
    "categories": [{
      "id": 1015,
      "slug": "any slug",
      "title": "any title",
      "description": "",
      "parent": 0,
      "post_count": 7
    }],
    "tags": [{
      "id": 1180,
      "slug": "any slug",
      "title": "any title",
      "description": "",
      "post_count": 6
    }, {
      "id": 1179,
      "slug": "religion",
      "title": "religion",
      "description": "",
      "post_count": 5
    }, {
      "id": 1209,
      "slug": "any slug",
      "title": "any title",
      "description": "",
      "post_count": 4
    }],
    "author": {
      "id": 1,
      "slug": "newsdesk",
      "name": "NewsDesk",
      "first_name": "",
      "last_name": "",
      "nickname": "NewsDesk",
      "url": "",
      "description": ""
    },
    "comments": [],
    "attachments": [{
      "id": 44930,
      "url": "anything appropriate",
      "slug": "anything appropriate",
      "title": "anything appropriate",
      "description": "",
      "caption": "",
      "parent": 62296,
      "mime_type": "image/jpeg",
      "images": {
        "full": {
          "url": "anything appropriate",
          "width": 290,
          "height": 147
        },
        "thumbnail": {
          "url": "anything appropriate",
          "width": 150,
          "height": 147
        },
        "medium": {
          "url": "anything appropriate",
          "width": 290,
          "height": 147
        },
        "large": {
          "url": "anything appropriate",
          "width": 290,
          "height": 147
        },
        "tie-small": {
          "url": "anything appropriate",
          "width": 55,
          "height": 55
        },
        "tie-medium": {
          "url": "anything appropriate",
          "width": 272,
          "height": 125
        },
        "tie-large": {
          "url": "anything appropriate",
          "width": 290,
          "height": 147
        },
        "slider": {
          "url": "anything appropriate",
          "width": 290,
          "height": 147
        },
        "big-slider": {
          "url": "anything appropriate",
          "width": 290,
          "height": 147
        }
      }
    }],
    "comment_count": 0,
    "comment_status": "open",
    "thumbnail": "anything",
    "appropriate": {
      "views": [
        "2"
      ],
      "taq_review_button_text": [
        ""
      ],
      "taq_review_button_size": [
        "medium"
      ],
      "taq_review_button_shape": [
        "square"
      ],
      "taq_review_button_color": [
        "#c7c7c7"
      ],
      "taq_button_icon": [
        "fa fa-check"
      ],
      "taq_review_button_type": [
        "flat"
      ],
      "taq_review_button_url": [
        ""
      ],
      "taq_review_title": [
        ""
      ],
      "taq_review_position": [
        ""
      ],
      "taq_review_style": [
        "stars"
      ],
      "taq_review_summary": [
        ""
      ],
      "taq_review_total": [
        ""
      ],
      "tie_hide_meta": [
        ""
      ],
      "tie_hide_author": [
        ""
      ],
      "tie_hide_share": [
        ""
      ],
      "tie_hide_related": [
        ""
      ],
      "tie_hide_check_also": [
        ""
      ],
      "tie_sidebar_pos": [
        "default"
      ],
      "tie_sidebar_post": [
        "category lifestyle"
      ],
      "tie_post_head": [
        "none"
      ],
      "tie_post_slider": [
        "59602"
      ],
      "tie_googlemap_url": [
        ""
      ],
      "tie_video_url": [
        ""
      ],
      "tie_video_self": [
        ""
      ],
      "tie_embed_code": [
        ""
      ],
      "tie_audio_m4a": [
        ""
      ],
      "tie_audio_mp3": [
        ""
      ],
      "tie_audio_oga": [
        ""
      ],
      "tie_audio_soundcloud": [
        ""
      ],
      "tie_banner_above": [
        ""
      ],
      "tie_banner_below": [
        ""
      ],
      "tie_posts_num": [
        ""
      ],
      "post_color": [
        ""
      ],
      "post_background": [
        "anything appropriate"
      ],
      "tie_views": [
        "2"
      ]
    },
    "thumbnail_size": "thumbnail",
    "thumbnail_images": {
      "full": {
        "url": "anything appropriate",
        "width": 290,
        "height": 147
      },
      "thumbnail": {
        "url": "anything appropriate",
        "width": 150,
        "height": 147
      },
      "medium": {
        "url": "anything appropriate",
        "width": 290,
        "height": 147
      },
      "large": {
        "url": "anything appropriate",
        "width": 290,
        "height": 147
      },
      "tie-small": {
        "url": "anything appropriate",
        "width": 55,
        "height": 55
      },
      "tie-medium": {
        "url": "anything appropriate",
        "width": 272,
        "height": 125
      },
      "tie-large": {
        "url": "anything appropriate",
        "width": 290,
        "height": 147
      },
      "slider": {
        "url": "anything appropriate",
        "width": 290,
        "height": 147
      },
      "big-slider": {
        "url": "anything appropriate",
        "width": 290,
        "height": 147
      }
    }
  }]
}


var newPost = {};
newPost.id = 65869;
newPost.categories = ["a", "b", "c", "d"];
newPost.author = {
  "name": "Jimbo",
  "last-name": "BobCat"
};

news.posts.push(newPost); //append the new post object.

document.write("<pre>" + JSON.stringify(news) + "</pre>")

显示我的意思。我创建了一个新的post对象,并使用news.posts.push(newPost)附加它。 push用于将数据附加到数组。

答案 1 :(得分:1)

使用推送方法。

// create the new object
var new_obj = {"key":"value", "next_key":"next_value"}

// append the new object to the array
posts.push(new_obj);

// display the values in the array
for (var i = 0; i < posts.length; i++) {
    console.log(posts[i]);
}

如果要直接推入json对象,请使用:

json_obj.posts.push( new_obj);

要从json数据中获取posts数组,请使用:

posts_array = json_obj.posts;

答案 2 :(得分:1)

如果你仔细看一下这个操作,这很简单。你有一个对象,假设$scope.newsList = {}

$scope.newsList = {
    "status": "ok",
    "count": 2,
    "count_total": 4231,
    "pages": 2116,
    "posts": [
        {
          "id": 62296
        },
        {
          "id": 62297
        },
        {
          "id": 62296            
        },
        {
          "id": 62297
        }
    ]
};

为简单起见,我正在考虑您的帖子对象仅包含每个帖子的ID。现在您可能已经附加了一个事件处理程序,它将处理滚动事件并一直获取新帖子。让我们假设您有另一个对象就像这个对象并将它们存储在另一个范围变量$scope.newNews中并假设它就像前一个对象$scope.newsList

$scope.newNews= {
    "status": "ok",
    "count": 2,
    "count_total": 4231,
    "pages": 2116,
    "posts": [
        {
          "id": 62296
        },
        {
          "id": 62297
        },
        {
          "id": 62296            
        }
    ]
};

您在newslist数组中有4个帖子,在newNews数组中有3个新帖子。当您将新的附加到旧的那个时,您应该在旧的新闻阵列中获得7个帖子。

  if( $scope.newNews.status == 'ok' && $scope.newNews.count > 0 ){
    var posts = $scope.newNews.posts;

    for(var key in posts) {
      if(posts.hasOwnProperty(key)){        
        $scope.newsList.posts.push(posts[key]);        
      }
    }
  }

首先,我们检查新到达对象的状态是ok还是收到的帖子数量是否为空。您的新闻对象包含我们感兴趣的帖子对象数组。我们可以通过$scope.newNews.posts访问该数组。这是posts数组,我们需要使用它。现在我们得到了数组,我们将进入一个循环,它将迭代我们到包含所有post对象的这个数组的每个post元素。在那里我们将检查属性是否存在(使用posts.hasOwnProperty(key))。如果数组中存在属性key,这意味着数组中存在key索引(这意味着value中也存在key),我们将推送值在我们的旧新闻阵中。我们可以通过$scope.newsList .posts.push(posts[key]);

访问此内容

现在,如果您检查原始或旧帖子数组中的帖子列表,您应该完全获得所有帖子。

希望这对你有所帮助。