javascript - 当它们是整数时保留javascript键顺序
问题描述
我一直在做一些阅读,可能错过了明显的东西,但我认为我没有。
我有以下代码:
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>');
}
我想<select>
使用 Jquery 添加到一个简单的空元素中。
https://jsfiddle.net/htrdzyqo/
但是,命令将示例 5 放在底部而不是正确的位置。阅读后,我意识到对象键没有正确排序(按键排序 JavaScript 对象)并且 JSON 键不能是整数(按键排序 JavaScript 对象)。我需要保留对象顺序而不是自动排序。原因是它的 ID 必须保持不变(因此没有 Array 替代方案)。
我错过了一些简单的事情还是需要重新考虑/工作?
解决方案
在 JSON 中,根据定义,对象 中的名称/值对{}
是无序的:它们没有特定的出现顺序。另一方面,在列表中,顺序被保留。 []
另请参阅this other StackOverflow question,其中答案引用了官方文档。
正如@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>');
}
推荐阅读
- android - 如何在 appium 中启用 chromedriver_autodownload 功能?
- ubuntu - 如何以 Windows 格式更改 Ubuntu WSL 中的目录?
- php - 你能在 JQuery 或 PHP 中通过 GET 获得返回 URL 吗?
- java - SWT 合成/画布适合图像
- c++ - Win32 函数的前向依赖
- r - 使用 ODBC::dbConnect 和 dplyr 连接到 Sybase IQ 数据库 - 未找到表名
- javascript - 角/Java 脚本;模板在 HTTP 完成前初始化
- javascript - 错误,在 Map 对象中插入键/值时,使用 forEach ()
- python - 导入错误:找不到“__main__”
- javascript - 如何测试 onKeyPress 函数调用 - React 测试库