javascript - javascript JSON 对象中是否存在整数和字符串键的排序?

标签 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"}

当键是字符串时,Json 对象不会自动进行排序(即使它是只包含字符串键的 Json 对象,或者散布有整数和字符串键)。

如果同一个 Json 对象中存在字符串和整数键,则整数将到达键数组的开头。

这种行为有什么原因吗?提前致谢...

最佳答案

对象键的顺序永远无法保证。即使您使用数字键,它们也是内部字符串。

来自ECMA Specification :

4.3.3 Object

An object is a member of the type Object. It is an unordered collection of properties each of which contains a primitive value, object, or function. A function stored in a property of an object is called a method.

关于javascript - javascript JSON 对象中是否存在整数和字符串键的排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49322423/

相关文章:

javascript - 使用 $http 服务将数据发布到本地 json 文件时未找到元素错误

javascript - 如何使用 Socket.io 在 Node.js 中添加房间?

c++ - 将 cin 用于 char 数组

javascript - 使用 ng-repeat 复选框的 AngularJS 过滤器在页面加载时显示所有内容

javascript - 检查 JS 中的数组

c++ - 在函数中引用自动数组迭代器

javascript - d3.json 不接受在 d3 甘特图中绘制的查询结果

json - 在solr中从JSON导入数据

javascript - 将数据表的行关联到 Bootstrap 开关(使用另一个列字段)

javascript - 悬停时打开下拉菜单,而不是单击 shopify