反向json javascript

Mar*_*ark 5 javascript jquery reverse json

是否有一种廉价的逆转方式:

{
    "10": "..."
    "11": "...",
    "12": "...",
    "13": "...",
    "14": "...",
}
Run Code Online (Sandbox Code Playgroud)

这样我得到:

{
    "14": "...",
    "13": "...",
    "12": "..."
    "11": "...",
    "10": "...",
}
Run Code Online (Sandbox Code Playgroud)

reverse()似乎不适用于json对象.我能想到的唯一方法是遍历所有元素并创建一个数组.感觉应该有更好的方法.

编辑:感谢所有帮助更新:

如果每个键都有按时间顺序排列的数据,那该怎么说呢.当我在对象上使用$ .each时,它从上到下穿过对象,我没有意识到这是不可靠的.

这是我正在尝试做的事情:

$.each(object, function (key, value) {
  function foo (key, value);
});
Run Code Online (Sandbox Code Playgroud)

除了最后3对之外,我想不要在foo上运行foo,也就是说我只想使用最后3对.我想如果我可以扭转它们,我可以运行前三个并停止.

有什么方法可以做到最后3?如果最后3个排序不可靠,是否有更安全的方法来获取最后3个.最后3个将具有最大的数字键.

谢谢.

编辑2:我基本上决定最终在服务器端进行操作.我正在重新组织我的数据库,以便相关的子文档现在已经填满了可以使用mongodb查询的文档.谢谢.

Ada*_*sek 8

Javascript关联数组是无序的.您不能依赖于任何特定顺序的属性.

来自Mozilla开发者网络:

虽然ECMAScript使对象的迭代顺序依赖于实现,但似乎所有主流浏览器都支持基于最先添加的属性的迭代顺序(至少对于不在原型上的属性).但是,对于Internet Explorer,当在属性上使用delete时,会产生一些令人困惑的行为,从而阻止其他浏览器将对象文字等简单对象用作有序关联数组.在资源管理器中,虽然属性值确实设置为未定义,但如果后来添加了一个具有相同名称的属性,则该属性将在其旧位置迭代 - 而不是在迭代序列的末尾,正如人们可能期望的那样删除了该属性,然后将其添加回来.

因此,如果要在跨浏览器环境中模拟有序关联数组,则必须使用两个单独的数组(一个用于键,另一个用于值),或者构建一个单属性对象数组等. .

  • @Ignacio这不是一个PHP问题. (4认同)
  • @Ignacio他在谈论JavaScript对象. (3认同)
  • 这句话不再是真的.Chrome和Opera(从10.50开始)都命令属性,其名称是无符号32位整数,然后是所有其他属性(然后以插入顺序出现). (2认同)