【发布时间】:2016-09-08 09:51:48
【问题描述】:
我从 mongoDB 获取数据并将其发送到客户端,返回的 JSON 结构如下:
{ "0" : { "_id" : { "$oid" : "57d129bfaa1a7567d9d" }, "id" : "155edc1698efc18e", "history_id" : "41752", "messages" : [ { "id" : "155edc1698efc18e", "snippet" : "Mari567567rnar | IT U756567ive travel experience T: +35667575756756| T: +7567560 F: +3567756792 | E: ad75675travel.com Ulix doo | Miramarsk765657 HR–105675 Zagreb ----------", "labels" : [ "INBOX", "IMPORTANT", "CATEGORY_PERSONAL", "Label_15", "Label_7" ], "date" : "1468572702000", "history_id" : "41752",
我使用var objects = JSON.parse(response);解析它
当我记录它时,它看起来像这样:
它基本上是对象的对象。它的作用类似于数组,但它不是数组,我不能使用数组方法,例如sort。
这就是我的内在对象的样子。
{_id:object, history_id:string, id:string, messages:array}
我即将将 history_id 值转换为 int 并按该值对这些对象进行排序。
我正在寻找按该值对这些对象进行排序的最佳方法。我使用了.sort 方法,但它是数组方法,并且没有为对象类型定义。我会将主对象转换为数组并调用该方法。或者,如果有一种方法可以以更优雅的方式对这些对象进行排序,而无需将其转换为数组。哪种方法更实用,如何正确实施?
【问题讨论】:
-
将您的对象转换为数组。对象没有顺序,无法排序,所以无论如何这是一个必要的步骤。
-
@deceze 你会推荐最实用的方法来将此对象转换为适当的可排序数组吗?
-
为什么以对象开头?你能在服务器上改变一些东西给你一个普通的数组吗?
-
如果它有一个长度属性,你可以使用
Array.prototype.sort.call( objectName, function(a, b) { return a.history_id - b.history_id; } )或类似的东西
标签: javascript