我从服务器获得了一些JSON数据.在我的JavaScript中,我想对它进行一些排序.我认为sort()函数会做我想要的.
但是,似乎JavaScript在到达时立即将JSON数据转换为Object.如果我尝试使用sort()方法,我会得到错误a-plenty(使用Firebug进行测试).
我环顾网络,每个人似乎都说,一方面,JSON对象已经是JavaScript数组,而且对象可以像数组一样对待.就像这个问题一样,在其中一个答案中,一个人说"[对象]是你的数据 - 你可以像对待数组那样访问它."
但是,这并不完全正确.JavaScript不允许我在我的对象上使用sort().而且由于默认的假设是它们都是一样的,所以似乎没有关于如何将Object转换为数组的任何指令,或强制JavaScript将其视为一个或类似的东西.
那么......我如何让JavaScript让这个数据作为数组处理并排序()呢?
我的对象的控制台日志输出看起来像这样(我希望能够按"级别"中的值排序):
OBJECT JSONdata
{
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
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用jQuery.log插件进行日志记录(如果可用,则记录到console.log),我没有看到Chrome JavaScript控制台中出现任何日志消息.
日志在Firefox下的Firebug控制台上运行,但我必须明确启用Firebug JavaScript控制台.错过Chrome下的某个选项?
编辑:
记录到控制台的唯一事情是
未捕获的语法错误,无法识别的表达式:|按钮
我假设Chrome控制台即使在上述错误之后也会记录语句,但此处Chrome可能存在某些问题,请参阅http://code.google.com/p/chromium/issues/detail? id = 29062.我在Linux下使用Chrome 5.0.375并且该bug被列为Windows XP,Chrome 4.0问题,它仍然可以应用.
当我控制登录jquery对象时,例如.
var s = $("#item");
console.log(s);
Run Code Online (Sandbox Code Playgroud)
我得到这样的东西
[div#item, context: document, selector: "#item", jquery: "1.9.1", constructor: function, init: function…]
Run Code Online (Sandbox Code Playgroud)
我记得之前(一个月前左右),我会得到类似的东西:
[<div id="item">pas</div>]
Run Code Online (Sandbox Code Playgroud)
这是Chrome本身的变化吗?或者jquery有变化?或者我实际上做了一些让输出看起来不同的东西
我发现第二个输出更容易阅读,我可以将鼠标悬停在此页面上并将其标记在页面上.现在我得到太多的信息,这很难读
Chrome 24有一种新的输出对象的方式console.log().
例如,console.log($("p"));在这个jsFiddle例子中输出这种疯狂:
?[<p>, <p>, <p>, prevObject: jQuery.fn.jQuery.init[1], context: #document, selector: "p"]
? 0: <p>
? 1: <p>
? 2: <p>
? context: #document
length: 3
? prevObject: jQuery.fn.jQuery.init[1]
selector: "p"
? __proto__: Object[0]
Run Code Online (Sandbox Code Playgroud)
我可以看到它将DOM元素的集合放在了开头.但是如果你试图扩展一个<p>大部分都是空的简单标签,它会抛到你身上:
? 0: <p>
accessKey: ""
align: ""
? attributes: NamedNodeMap
...
[stopping here for sanity's sake]
Run Code Online (Sandbox Code Playgroud)
那么我该如何使用所有这些信息呢?我的第一直觉是把它驯服到以前的样子,但是第二个想法,那里确实有很多我可能想要访问的信息.但我很难理解我在看什么.其中大部分看起来像jQuery值.这是对象具有(或没有)的每个jQuery值的列表吗?
那? context:就是事物和? __proto__:事物的整个问题.一旦你开始深入钻研,__proto__你永远不会停止.我觉得它无限下来!
我怎样才能开始学习如何使用这个新输出?
编辑:我实际上刚刚意识到我还在使用Chrome 23,这不是24中引入的东西.这个帖子中有人说这是Chrome 24的问题,但也许它是23的新版本?无论如何,我最近才开始在jQuery对象上注意到这一点.
编辑2:如果你只是想找到如何记录旧方法,试试这个:( …
console google-chrome developer-tools google-chrome-devtools
javascript ×2
jquery ×2
arrays ×1
console ×1
console.log ×1
json ×1
logging ×1
object ×1
sorting ×1