我的API返回以下字典:
"positions": {
"31": 18,
"25": 12,
"23": 12,
"22": 12,
"19": 12,
"26": 9,
"21": 9,
"29": 9,
"20": 9,
"30": 9,
"24": 6,
"27": 6,
"28": 6,
"17": 3
}
当我在Angular中收到它时,它重新排序字典并按键而不是按值对它们进行排序。所以我得到这样的东西
"positions": {
"17": 3,
"19": 12,
"20": 9,
...
}
为什么呢?我是否必须为此KVP定义一个模型,我告诉它键是字符串而不是数字?我该怎么做?
我不希望在后端和前端对数据进行排序。
答案 0 :(得分:0)
为什么?
问题是the way that the ECMAScript spec specifies this behavior(这实际上只反映了运行时如何实现这一点。
- 让密钥成为新的空列表。
- 对于作为整数索引的O的每个自有属性键P,按升序数字索引顺序,执行
- 将P添加为键的最后一个元素。
- 对于作为字符串但不是整数索引的O的每个自有属性键P,按照属性创建的按时间顺序递增,
- 将P添加为键的最后一个元素。
- 对于作为符号的O的每个自有属性密钥P,按照属性创建的递增时间顺序,执行
- 将P添加为键的最后一个元素。
- 返回键。
醇>
基本上,积分键将始终以递增(递增)顺序排在第一位。
与jonrsharpe提到的一样,你应该使positions
成为一个数组,可以是键/值对对象,也可以是其他可以作为元组的数组。