【发布时间】:2011-06-23 05:30:20
【问题描述】:
我有一些从服务器获取的 JSON 数据。在我的 JavaScript 中,我想对其进行一些排序。我认为 sort() 函数会做我想做的事。
但是,JavaScript 似乎在 JSON 数据到达时立即将其转换为 Object。如果我尝试使用 sort() 方法,我会收到很多错误(使用 Firebug 进行测试)。
我在网上看了一圈,似乎每个人都在说,一方面,JSON 对象已经是 JavaScript 数组,而且对象可以像数组一样对待。就像在this question 上一样,在其中一个答案中,有人说“[Object object] 是您的数据——您可以像访问数组一样访问它。”
然而,这并不完全正确。 JavaScript 不允许我在对象上使用 sort()。而且由于默认假设是它们都是相同的东西,因此似乎没有任何关于如何将 Object 转换为 Array 或强制 JavaScript 将其视为一个或类似的说明。
那么...如何让 JavaScript 让我将这些数据视为一个数组并对其进行排序()?
我的对象的控制台日志输出如下所示(我希望能够按“级别”中的值进行排序):
对象 JSON 数据
{
1: {
displayName: "Dude1",
email: "dude1@example.com<mailto:dude1@example.com>",
lastActive: 1296980700,
level: 57,
timeout: 12969932837
}, 2: {
displayName: "Dude2",
email: "dude2@example.com<mailto:dude2@example.com>",
lastActive: 1296983456,
level: 28,
timeout: 12969937382
}, 3: {
displayName: "Dude3",
email: "dude3@example.com<mailto:dude3@example.com>",
lastActive: 1296980749,
level: 99,
timeout: 129699323459
}
}
【问题讨论】:
-
如果你想要
Array,为什么不使用 JSON 数组呢?["foo","bar","baz"]是Array,{0:"foo",1:"bar",2:"baz"}是Object... 并不是所有带有数字键的Objects 都是Arrays,因为其中一个Array有一个length和一堆方法定义Object不
标签: javascript arrays json sorting object