如何重新排列对象的属性?

时间:2018-11-12 14:00:11

标签: javascript json angular

我有一个这样的对象:

goto

我想这样重新排列其属性:

user = {
  'a': 0,
  'b': 1,
  'c': 3,
  'd': 4
}

我不想创建一个新对象,而是想重新排列现有对象的属性。

2 个答案:

答案 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对象中,您不能真正对键/值对进行排序。它们以自己的内部格式存储,因此永远无法真正依赖其顺序。

我不确定您的确切用例是什么,但是如果您需要某些字段的有保证的顺序,则可以创建一个数组,其中包含按所需顺序排列的字段名,并使用该数组遍历对象并获取所需的值。

希望这会有所帮助!