当我运行此代码时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(我不知道是谁)按键对这个对象进行排序?我不想要这个。
当我运行此代码时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(我不知道是谁)按键对这个对象进行排序?我不想要这个。
您看到的是 V8 JavaScript 引擎的一种行为。它不是 JavaScript 规范指定的东西,也不是你可以依赖的东西(大多数引擎不这样做)。
但这里重要的是:JavaScript 对象没有顺序。因此,V8 的行为与将这些键按任何其他顺序排列一样正确。如果您希望事物按特定顺序排列,则必须使用有序容器,例如数组。
JavaScript 对象没有排序。如果你想让事情井井有条,你可以使用数组。
var data = [
{ key: "456", value: "First" },
…
];
或者,或者,将键顺序保存在单独的数组中。
对象中的属性没有排序。当为控制台构建对象的表示时,您不能期望您给出的顺序被保留。
迭代顺序取决于实现。不要依赖它。如果您需要一些顺序,请使用另一种数据结构(例如键值数组)。
// 尝试按年龄对员工进行排序
employees.sort(function(a, b){
return a.age-b.age
});