JavaScript 或 Node.js意外地对对象进行排序
JavaScript or Node.js unexpectedly sort objects
当我通过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
});
相关文章:
- 如何在节点中进行 Json 对象排序.js
- jQuery.每个对象排序
- Javascript对象排序
- Javascript 对象排序
- Javascript中的JSON对象排序
- jQuery停止对象排序
- 带有下划线排序的对象排序的数组
- JS对象排序日期排序
- JSON对象排序被jQuery或Javascript篡改
- 高级对象排序
- 将json对象排序到嵌套树中
- 按两个不同的条件对数组中的对象排序
- 如何在angular js中使用自定义排序顺序对对象排序
- 在AngularJS的ng-repeat中,使用Underscore/Lodash按值将对象排序为一对数组
- 给定一个对象数组,如何根据深度为n的属性对对象排序
- JavaScript数组对象排序没有按预期工作
- 对数组内的对象排序
- 自定义javascript对象排序和维护索引关联
- Javascript对象排序不工作
- Javascript对象的对象排序