JavaScript自动排序dict?

JavaScript自动排序dict?,javascript,django,Javascript,Django,所以,问题在于,当ajax脚本从服务器接收字典时,它会获得不同的顺序: 服务器发送了以下消息: {753: 'Wraith', 752: 'Phantom Extended', 751: 'Phantom', 750: 'Ghost Extended', 749: 'Ghost', 748: 'Dawn', 747: 'Cullinan', 746: 'Black Badge'} 但客户得到的是: {746: "Black Badge", 747: "Cullin

所以,问题在于,当ajax脚本从服务器接收字典时,它会获得不同的顺序:

服务器发送了以下消息:

{753: 'Wraith', 752: 'Phantom Extended', 751: 'Phantom', 750: 'Ghost Extended', 749: 'Ghost', 748: 'Dawn', 747: 'Cullinan', 746: 'Black Badge'}
但客户得到的是:

{746: "Black Badge", 747: "Cullinan", 748: "Dawn", 749: "Ghost", 750: "Ghost Extended", 751: "Phantom", 752: "Phantom Extended", 753: "Wraith"}
Js:

此外,服务器正在Django上运行


请帮忙!我非常感谢

如果对象的属性是“索引”(范围为0..2^32-1的数字字符串),则这些属性总是按数字顺序进行枚举。你无法改变这一点

让您的服务器应用程序以更合理的格式返回数据,如数字字符串对数组或对象数组
{id,value}
。如果不可能,请在客户端将对象转换为上述格式,例如:

response={753:'幽灵',752:'幽灵扩展',751:'幽灵扩展',750:'幽灵扩展',749:'幽灵',748:'黎明',747:'库利南',746:'黑色徽章'}
dataToDisplay=Object.entries(response.sort)(
([key1,val1],[key2,val2])=>
val1.本地比较(val2))

log(dataToDisplay)
JavaScript中的对象是无序的。或者更确切地说,你不能依赖对象按你想要的方式排序。@Andy,但这是怎么发生的呢?为什么服务器只发送一件事,而在客户端我得到的却是另一件事?您应该将它们视为无序的,就像Python字典一样。但是,许多(全部?)对象“迭代”函数将首先按升序对数值属性进行迭代,然后按插入顺序对字符串属性进行迭代,然后再对符号进行迭代。能否对数组中的键进行重新排序并基于此访问对象?然后对它们进行排序(
object.entries()
+
array.prototype.sort()
)在您将它们添加到DOM之前,非常感谢您!交换键和值是最好最简单的解决方案!
$.ajax({
    method: 'GET',
    url: request_url,
    success: function(data){
        console.log(data.response_models);
        ...