javascript JSON对象中是否存在整数键和字符串键的排序?
我尝试了不同的对象,发现Javascript JSON对象中有一点奇怪的行为。如果有人能详细说明,那就太好了 例如:javascript JSON对象中是否存在整数键和字符串键的排序?,javascript,arrays,json,string,integer,Javascript,Arrays,Json,String,Integer,我尝试了不同的对象,发现Javascript JSON对象中有一点奇怪的行为。如果有人能详细说明,那就太好了 例如: var bat={3:“FA”,7:“WER”,1:“JWRT”,d:“EWR”,a:“bA”,8:“ADB”} 对于这个Json对象,当它将整数作为键时(即使将整数括在双引号中也有效),当您尝试使用object.keys()或简单地打印bat来获取键时,可以看到以下顺序 {1:“JWRT”,3:“FA”,7:“WER”,8:“ADB”,d:“EWR”,a:“bA”} 当键是字符
var bat={3:“FA”,7:“WER”,1:“JWRT”,d:“EWR”,a:“bA”,8:“ADB”}代码>
对于这个Json对象,当它将整数作为键时(即使将整数括在双引号中也有效),当您尝试使用object.keys()或简单地打印bat来获取键时,可以看到以下顺序
{1:“JWRT”,3:“FA”,7:“WER”,8:“ADB”,d:“EWR”,a:“bA”}
当键是字符串时,Json对象的排序不会自动发生(即使它是一个只包含字符串键的Json对象,或者具有整数键和字符串键)
在同一Json对象中有字符串键和整数键的情况下,整数到达键数组的开头
这种行为有什么原因吗?提前感谢…对象键的顺序永远无法保证。即使使用数字键,它们在内部也是字符串
从:
4.3.3对象
对象是类型对象的成员它是一个无序的属性集合,每个属性都包含一个基元
值、对象或函数。存储在函数的属性中的函数
对象称为方法
这不是JSON,JSON中的键必须是字符串。在使用“JSON对象”的地方,实际上应该只写“对象”。对象的键不遵循任何顺序。为什么?因为这毫无意义。如果需要在这些键上循环,请使用函数Object.keys
,然后执行函数sort
。标记为重复<代码>:)
是的,正确,这就是我想要理解的。所以这些数字在内部是字符串,接下来的问题是,它们是如何单独对“整数字符串”排序的。有什么想法吗?正如我所说的,没有任何特定订单的保证,你得到的订单可能不是我得到的订单。它是特定于实现的。试图解释为什么顺序是这样是毫无意义的。如果顺序对你很重要,试试地图。