按属性名称对 JavaScript 对象进行排序

2024-03-26

我已经寻找了一段时间,想要一种对 Javascript 对象进行排序的方法,如下所示:

{
    method: 'artist.getInfo',
    artist: 'Green Day',
    format: 'json',
    api_key: 'fa3af76b9396d0091c9c41ebe3c63716'
}

按名称字母顺序排序即可得到:

{
    api_key: 'fa3af76b9396d0091c9c41ebe3c63716',
    artist: 'Green Day',
    format: 'json',
    method: 'artist.getInfo'
}

我找不到任何可以执行此操作的代码。有人可以给我一些帮助吗?


评论更新:

这个答案已经过时了。在 ES6 中,对象键现在是有序的。看这个问题 https://stackoverflow.com/q/5467129/1980027 for an 最新答案 https://stackoverflow.com/a/31102605/1980027

根据定义,对象中键的顺序未定义 https://stackoverflow.com/q/5525795/1048572,因此您可能无法以面向未来的方式做到这一点。相反,您应该考虑在对象实际显示给用户时对这些键进行排序。无论如何,它内部使用的排序顺序并不重要。

按照惯例,大多数浏览器将按照添加键的顺序保留对象中键的顺序。所以,你可以这样做,但不要指望它总是有效:

function sortObject(o) {
    var sorted = {},
    key, a = [];

    for (key in o) {
        if (o.hasOwnProperty(key)) {
            a.push(key);
        }
    }

    a.sort();

    for (key = 0; key < a.length; key++) {
        sorted[a[key]] = o[a[key]];
    }
    return sorted;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按属性名称对 JavaScript 对象进行排序 的相关文章

  • 如何重新加载当前的 Angular 2 组件

    如何在 Angular 2 中再次重新加载相同的组件 下面是我的代码 import Component OnInit ElementRef Renderer from angular core import Router Activated
  • VueJS 在内联模板组件中重新编译 HTML

    我已经包装了 bootstrapTable https github com wenzhixin bootstrap table https github com wenzhixin bootstrap table 到指令中 如下所示 Vu
  • 如何检查 GAS 中是否存在文件(通过 id)

    我知道有关如何检查文件是否存在的问答by name using hasnext 不过我需要检查一下按文件 ID 最好没有高级 Drive API 披露 我写了一个基于错误处理的解决方案 function ifFileExists id tr
  • 在辅助方法中 React i18next useTranslation Hook

    我正在使用 React 和react i18next 我的 index tsx 文件包含一些组件 我可以在那里使用翻译功能 index js import React Suspense from react import ReactDOM
  • 将正则表达式扩展到负数

    我想将以下正则表达式扩展到负数 this value this value replace 0 9 g 我尝试添加减号 执行类似 0 9 g 的操作 但这允许在数字的任何位置输入减号 我只想允许数字开头出现一次减号 随后出现的减号应被忽略
  • 进度条摆动效果

    摆动垂直进度条 我学会了如何构建一个整洁的 动态大小的垂直进度条 其中带有横栏这个问题 https stackoverflow com questions 22337851 css vertical progress bar noredir
  • 如何解决大内容的角度性能问题

    我熟悉 Angular 的摘要周期以及它如何影响长列表和大模型值的性能 我只是好奇您是否有专门针对我的情况的问题的解决方法 我正在构建一个应用程序 它可能需要也可能不需要用户输入大文本 例如错误日志textarea 但由于与 2 路数据绑定
  • JavaScript 运行时错误:无法获取未定义或空引用的属性“msie”

    我只是尝试更改我的 jquery ui 对母版页的引用 我仅在 Internet Explorer 上收到上述错误 我在 Firefox 和 Chrome 上没有收到错误消息 这是抛出错误的 jquery 代码 return a brows
  • 检查一个元素是否包含特定的子元素

    我有很多div有时包含链接 我想检查他们是否有链接 这是我的尝试 var container this closest content find text Check if text contains a tags if container
  • 在 Leaflet L.Draw 插件中以编程方式添加多边形

    有没有办法使用 Leaflet 绘制插件以编程方式添加多边形 https github com Leaflet Leaflet draw https github com Leaflet Leaflet draw 例如 单击一个按钮并添加一
  • Hadoop:处理大型序列化对象

    我正在开发一个应用程序来使用 Hadoop 框架处理 和合并 几个大型 java 序列化对象 顺序 GB 大小 Hadoop 存储将文件块分布在不同的主机上 但由于反序列化需要所有块都存在于单个主机上 因此它会极大地影响性能 我该如何处理这
  • toLocaleLowerCase() 和 toLowerCase() 之间的区别[重复]

    这个问题在这里已经有答案了 我试图fiddle http jsfiddle net xameeramir kr33b0aL with toLocaleLowerCase http www w3schools com jsref jsref
  • 如何限制上下文菜单仅针对 Chrome 扩展程序中的某些选定文本显示?

    我做了一个非常简单的镀铬扩展 https chrome google com extensions detail goanbaknlbojfglcepjnankoobfakbpg它允许用户突出显示 DOI 号码 右键单击并选择 解析 DOI
  • 多个函数完成后运行回调

    我有多个耗时的函数 我想在它们全部完成后运行一个函数 例如 data x thisTakes2Seconds data y thisTakes5Seconds http post data 我熟悉 Javascript 中回调的概念 但如果
  • 如何从 API 获取雅虎天气背景?

    我有一个天气小部件 我需要动态背景 雅虎有天气 API 但我无法找到与天气类型相关的背景图像 https weather yahoo com https weather yahoo com 这可能吗 var url http query y
  • 跨源资源共享中 this.withCredentials 属性的问题

    我们正在实现一个基于 AngularJS 的应用程序 该应用程序使用托管在不同域中的 REST Web 服务 以下脚本用于 CORS 它在 Chrome 和 FireFox 上完美运行 在 IE9 和 Safari 中进行身份验证时存在问题
  • 现在的浏览器真的不隐藏javascript吗?

    这不是重复的这个问题 https stackoverflow com questions 822872 do web sites really need to cater for browsers that dont have javasc
  • 如何将焦点设置到 django 表单元素的 CharField

    我的登录页面使用 Django 表单 I want to set focus to the first textField username when the page loads 我尝试使用 Jquery 如下 但没有得到结果 forms
  • Javascript 已禁用,简短的问题

    只是一些关于 javascript 和网站的简短问题 1 通过启用 javascript 是否意味着在浏览器设置中安装并启用了 sun java 或者每个浏览器都始终启用 JavaScript 吗 2 如果禁用 javascript 我的网
  • 删除 JavaScript 中的不间断空格

    我无法从字符串中删除空格 首先我要转换div to text 删除标签 有效 然后我尝试删除 nbsp 字符串的一部分 但它不起作用 知道我做错了什么 newStr myDiv text newStr newStr replace nbsp

随机推荐

  • 在 Python 3.5 而不是 2.7 上运行 Django 1.9

    我在 OSX 10 10 上运行 Python 2 7 和 3 5 还有 Django 1 9a 这两个版本都支持 Python 问题是我想在 Python 3 5 而不是 2 7 上运行 Django 在某些线程上 我发现了通过包含 Py
  • 生成传出 URL 时选择了意外的路由

    请考虑以下路线 routes MapRoute route1 controller month year action user routes MapRoute route2 controller month year action 以及以
  • ColdFusion 8中是否有类似于ColdFusion 9中的ArrayFind的功能?

    我在工作中与另一位程序员同事交谈 我们使用 ColdFusion 他告诉我只需在数组中查找一个值我必须执行整个循环 ColdFusion 8 中是否真的没有函数可以简单地在数组中查找值 arrayFind ColdFusion 8 中不存在
  • 从 mongoDB 中删除文档

    这可能是一个非常愚蠢的问题 但我是 MongoDB 的新手 所以请耐心等待 我创建了一个独立的红宝石类 require rubygems require mongo require bson require mongo mapper Mon
  • 如何计算Java中的时差?

    我想从 19 00 00 减去两个时间段 例如 16 00 00 Java 有没有这个功能 结果可以以毫秒 秒或分钟为单位 Java 8 有一个更清洁的解决方案 https docs oracle com javase 8 docs api
  • 从 std::cout 或 std::ofstream(file) 获取 std::ostream

    我如何绑定std ostream到任一std cout或到一个std ofstream对象 取决于特定的程序条件 尽管由于多种原因这无效 但我希望实现语义上与以下内容等效的东西 std ostream out condition std c
  • 我什么时候应该使用 LRUCache 回收位图?

    我正在使用一个LRUCache缓存存储在文件系统上的位图 我根据这里的示例构建了缓存 http developer android com training displaying bitmaps cache bitmap html http
  • 在 Tkinter 中处理触摸屏手势

    我将如何在 Tkinter 中安装触摸屏手势处理程序 我需要一些特别简单的事情 每当检测到 展开 手势时就增加字体大小 如果 Tcl Tk 没有具体实现的话 这是否可以在 Tkinter 中实现 我想要么窗口管理器向客户端窗口发送一些我可以
  • 如果更改来源不是来自 html,则不会触发 Javascript 事件?

    我试图理解为什么以下示例中的更改事件没有被触发 我将准确显示在哪里 我有一个复选框 我们将其称为 主复选框 选中时 我想检查一些其他相关的复选框 到目前为止有效 此外 当我取消选中相关复选框之一 子复选框 时 我想取消选中 mainChec
  • Android 中流畅的视频擦除

    我正在尝试使用 Android 实现流畅的视频擦除VideoView The seekTo的方法MediaPlayer没有完全按照我想要的方式做 它并不完全寻求我在其中传递的毫秒 它实际上从 跳转到最近的位置 而不是我想要的确切位置 框架也
  • 如何按顺序循环 GET/POST 调用(等待上一个)返回?

    我正在为网页编写 Tampermonkey 脚本 并尝试从其他页面提取数据 我正在尝试创建一个内部有一个循环遍历列表的函数 llcList 并从 ajax 方法 GET 检索数据 但希望等待第一个请求完成后再转到第二个请求 如果我能让它多等
  • 如何找出 Android 中的 GMT 偏移值

    如何找出用户的 GMT 值 例如印度为 05 30 如何在 Android 中计算 05 30 值 我需要这个 因为我在我的应用程序中使用一个java库 它有一个带有这个 05 30字段的函数 我想通过计算生成这个字段 这样我就不必填写国家
  • Visual Studio 2008 中无法识别的标记前缀或设备筛选器

    我有一组 Web 控件 位于网站引用的程序集中 我可以毫无问题地构建和运行所有内容 但是当我查看正在使用控件的 aspx 页面时 我会在标签前缀下方看到一条绿色下划线
  • 删除字符串中多余的空格

    我想使用 VB net 删除多余的空格 ex The Quick Brown Fox 我要输出 The Quick Brown Fox 谢谢 英奇卡 您可以使用一个简单的正则表达式来实现 Dim cleaned As String Rege
  • 如何从传递到 scalatags 的事件处理程序访问“this”元素?

    我正在尝试访问当前的文本 this 元素来自使用 scalatags 创建的事件处理程序 这是我尝试过的 val onChange e HTMLElement gt number e textContent toInt js ThisFun
  • Rails/ActiveRecord 按月+年分组并计数

    我有一张桌子Albums有一个date列名为release date 我想获得所有月份 年份组合的列表以及该月份 年份发行的专辑数量 因此 输出可能类似于 2016 年 11 月 11 2016 年 10 月 4 2016 年 7 月 19
  • DropArea 不会通知有关 onEntered、onExited、onDropped 的操作

    I have Rectangle洋溢着MouseArea其中上onPressAndHold 处理程序透露第二个Rectangle和转账drag对此采取行动Rectangle 问题是当我移动那一秒时Rectangle over DropAre
  • Kendo UI 树视图父节点不带复选框

    什么方法可以实现显示带有复选框的 TreeView 但我不需要父节点的复选框 仅适用于没有子项的 项目 即 我正在显示文件夹结构 但不希望仅针对文件为任何文件夹设置复选框 Thanks 你应该使用使用复选框模板 http docs kend
  • 64 位 Windows 上的 32 位和 64 位互操作性

    是否有讨论 32 位和 64 位进程之间的互操作性的全面权威参考资料 根据谷歌搜索 我推断出 32位DLL只能驻留在32位进程中 64位DLL只能驻留在64位进程中 32位和64位进程只能使用松散耦合的消息系统进行通信 例如网络通信 这意味
  • 按属性名称对 JavaScript 对象进行排序

    我已经寻找了一段时间 想要一种对 Javascript 对象进行排序的方法 如下所示 method artist getInfo artist Green Day format json api key fa3af76b9396d0091c