当前位置: 首页 > 知识库问答 >
问题:

当javascript键为整数时保留它们的顺序

孟均
2023-03-14
var res = JSON.parse('{"products":{"0":"Please Select","2":"Example 1","3":"Example 2","4":"Example 3","5":"Example 4","88":"Example 5","7":"Example 6","8":"Example 7"}}');

for (key in res.products){
  $('#myList').append('<option value="'+key+'">'+res.products[key]+'</option>');
}

然而,顺序是将示例5放在底部,而不是在其正确的位置。在阅读之后,我意识到对象键没有正确排序(按键排序JavaScript对象),并且JSON键不能是整数(按键排序JavaScript对象)。我需要保留对象顺序,而不是自动排序。原因是它的一个ID必须保持不变(所以没有数组替代)。

我是错过了一些简单的东西,还是需要重新思考/工作?

共有1个答案

韩瀚
2023-03-14

在JSON中,根据定义,对象{}中的名称/值对是无序的:它们没有特定的出现顺序。另一方面,在列表[]中,顺序被保留。

另请参见另一个StackOverflow问题,答案引用了官方文档。

正如@bergi在评论中已经指出的,将产品放入列表是正确的解决方案。

JSON.parse('{"products": [ {"key": 0, "text": "Please Select"}, {"key": 2, "text": "Example 1"}, ... ]}');

for (let product of res.products) {
  $('#myList').append('<option value="'+product.key+'">'+product.text+'</option>');
}
 类似资料:
  • 问题内容: 保留哪些JavaScript关键字(函数名称,变量等)? 问题答案: 其中包含JavaScript中所有保留的关键字,专门针对那些当下保持诚实,而不仅仅是尝试得分的人:

  • 考虑到8字节的双精度可以精确地表示所有4字节的整数,我想知道将存储整数的双精度a除以存储整数的双精度B(这样整数B除以a)是否总能得到与整数对应的精确双精度,即它们的商?那么,如果B和C是整数,并且B*C在32位int内,那么可以保证 IEEE754标准是否保证了这一点? 在我的测试中,它似乎适用于我尝试过的所有示例。在Python中: 问这个问题的原因是Matlab很难处理ints,所以我通常只

  • 是否可以在保留其键的同时存储 行? 假设我有下面的虚拟表: 我想存储此表,以便行按排序,并按按递减顺序排序,即: 显然,我可以将它保存为一个新变量,但是我还想将< code>id列作为我的主键。 Arun对“在data.table中设置键的目的是什么?”建议这可以通过巧妙使用< code>setkey来实现,因为它按照键的顺序对data.table进行排序(尽管没有将键设置为降序的选项): 但是,

  • 问题内容: Java Set是否保留顺序?有一种方法将Set返回给我,并且假定数据是有序的,但是遍历Set时,数据是无序的。有没有更好的方法来解决这个问题?是否需要更改方法以返回Set以外的内容? 问题答案: 该Set接口不提供任何订购保证。 它的子接口代表根据某种标准排序的集合。在Java 6中,有两个实现的标准容器。他们是和。 除了SortedSet接口之外,还有类。它记住元素插入到集合中的顺

  • 问题内容: 在以最小方式处理XML时,有什么方法可以保留属性的原始顺序吗? 说我有: 当我用最小修改它时,属性按字母顺序重新排列为蓝色,绿色和红色。我想保留原始顺序。 我通过遍历返回的元素来处理文件,然后进行这样的分配。 问题答案: 在以最小方式处理XML时,有什么方法可以保留属性的原始顺序吗? 如果为“ no”,则用于存储属性的数据类型是无序字典。pxdom可以做到,尽管它的速度要慢得多。