【问题标题】:JavaScript or Node.js unexpectedly sort objectsJavaScript 或 Node.js 意外地对对象进行排序
【发布时间】:2013-11-13 04:54:32
【问题描述】:

当我通过node app.js运行这段代码时

'use strict';

var data = {"456":"First","789":"Second","123":"Third"};

console.log(data);

我得到了下一个结果:

{ '123': 'Third', '456': 'First', '789': 'Second' }

为什么是 JS 或 Node.js(我不知道是谁)按键对这个对象进行排序?我不想要这个。

【问题讨论】:

    标签: javascript node.js sorting object


    【解决方案1】:

    您看到的是 V8 JavaScript 引擎的一种行为。它不是 JavaScript 规范指定的东西,也不是你可以依赖的东西(大多数引擎 don't do that)。

    但这里重要的是:JavaScript 对象没有顺序。因此,V8 的行为与将这些键按任何其他顺序排列一样正确。如果您希望按特定顺序排列,则必须使用有序容器,例如数组。

    【讨论】:

      【解决方案2】:

      JavaScript 对象没有顺序。如果你想让事情井井有条,你可以使用数组。

      var data = [
          { key: "456", value: "First" },
          …
      ];
      

      或者,或者,将键顺序保存在单独的数组中。

      【讨论】:

        【解决方案3】:

        对象中的属性没有顺序。当为控制台构建对象的表示时,您不能期望您给出的顺序被保留。

        迭代顺序取决于实现。不要依赖它。如果您需要某种顺序,请使用其他数据结构(例如键值数组)。

        【讨论】:

          【解决方案4】:

          // 尝试按年龄对员工进行排序

          employees.sort(function(a, b){
           return a.age-b.age
          });
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-10-04
            • 1970-01-01
            • 2021-08-19
            • 2018-08-18
            • 1970-01-01
            • 2022-01-26
            • 2014-02-22
            相关资源
            最近更新 更多