重新排序打字稿中的Json Object键

时间:2019-06-07 03:45:51

标签: angular typescript

例如以下

MIN_OSX_VERSION="10.15"

是否可以重新排序?

[
    {'1000': '', '5000': '', '10000': '', 'Name': 'test1', 'Email': 'test1@gmail.com', 'Reason': ''},
    {'1000': '', '5000': '', '10000': '', 'Name': 'test2', 'Email': 'test2@gmail.com', 'Reason': ''}
]

2 个答案:

答案 0 :(得分:0)

在您的特定情况下,答案是。尽管ES6(以及现代浏览器标准和实现)保证了对象属性的顺序,但是有一个主要的例外:整数索引

由于您的对象具有'1000''5000''10000'之类的键,因此您将无法获得所需的顺序;这些整数索引将始终是第一个。

  

按以下顺序遍历属性键:

     
      
  • 首先,键是升序的整数索引。
  •   
  • 然后,按其添加到对象的顺序,所有其他字符串键。
  •   
     

[...]

     

大致来说,整数索引是一个字符串,如果将其转换为53位非负整数,则返回的值是相同的。因此:

     
      
  • '10''2'是整数索引。
  •   
  • '02'不是整数索引。将其覆盖为整数然后返回将导致不同的字符串'2'
  •   
  • '3.141'不是整数索引,因为3.141不是整数。
  •   

Source

还有一个简短的示例:

const obj = {
  "Z": 1,
  "B": 2,
  "C": 3
};

console.log(obj);   //Maintains creation order

const obj2 = {
  "A": 1,
  "B": 2,
  "100": 3
}

console.log(obj2);  //Does not maintain creation order

答案 1 :(得分:0)

对象属性的顺序无关紧要。如果这样,您手头的设计不好。最好的方法是重新考虑您的设计。