我有一个这样的对象:
goto
我想这样重新排列其属性:
user = {
'a': 0,
'b': 1,
'c': 3,
'd': 4
}
我不想创建一个新对象,而是想重新排列现有对象的属性。
答案 0 :(得分:1)
您不能在普通对象中定义键的顺序。相反,您可以做的是将Object
转换为Map
。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map
Map对象按插入顺序迭代其元素-for ... of循环为每次迭代返回[key,value]数组。
var user = {a: 0, b: 1, c: 3, d: 4};
var uMap = new Map([['c', user.c], ['a', user.a], ['b', user.b], ['d', user.d]]);
或者,您可以将Object
变成Array
并使用它。这种方法的缺点是,您必须记住正确的属性索引位置/什么属性对应于数组中的哪个位置:
var user = {a: 0, b: 1, c: 3, d: 4};
var uArr = [user.c, user.a, user.b, user.d];
答案 1 :(得分:1)
在JavaScript对象中,您不能真正对键/值对进行排序。它们以自己的内部格式存储,因此永远无法真正依赖其顺序。
我不确定您的确切用例是什么,但是如果您需要某些字段的有保证的顺序,则可以创建一个数组,其中包含按所需顺序排列的字段名,并使用该数组遍历对象并获取所需的值。
希望这会有所帮助!