[英]How to append several new objects, after the last object of an array of objects in Javascript?
我正在制作一个由wordpress组成的新闻网站的移动应用程序(使用Ionic Framework)。 从站点获取json文件。 我必须使用wordpress网站的一些新帖子获取相同的重复json数据,以便我的应用在用户继续滚动时显示新消息。 所以我必须将这些新的几个帖子对象添加/附加到之前的“posts”对象数组中。 这是传统的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不太熟悉。 因此,让我真正痛苦的是将新发布的帖子附加到相同的“帖子”数组中。
我可以将“posts”数组保存到我的应用程序的变量中。 但是在最后一个帖子对象进入“posts”数组后,无法追加新的获取对象。
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
用于将数据附加到数组。
使用推送方法。
// 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;
如果你仔细看一下这个操作,这很简单。 你有一个对象,假设$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]);
来访问它$scope.newsList .posts.push(posts[key]);
现在,如果您检查原始或旧帖子数组中的帖子列表,您应该完全获得所有帖子。
希望这可能对你有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.