javascript - JSON.parse in Javascript乱序选择

标签 javascript html arrays json ajax

我从 api 收到一个这样的 Json:

{
  "paises":{
    "145":"CHINA (53)",
    "150":"ESPAÑA (45)",
    "68":"HOLANDA (38)",
    "236":"RUMANIA (52)"
  }
}

国家列表总是按字母顺序排列,但当添加到选择列表时显示无序并按 id 排序。像这样:

 "68":"HOLANDA (38)",
 "145":"CHINA (53)",
 "150":"ESPAÑA (45)",
 "236":"RUMANIA (52)"

这是一个代码:

   var datos = JSON.parse(data);

   $.each(datos.paises, function(id, valor) {
          $("#informe-id").append($('<option>', {
             value: id,
             text: valor,
          }));
   });

在我的项目中,我在更多选择中遇到了这个问题。在其他列表中,列表大小大于 200,因此解析和缩短可能会消耗大量资源。 按字母顺序填充选择保留列表的最佳方法是什么?

非常感谢

最佳答案

您可以使用Object.entries 将对象转换为数组。使用 sort 对其进行排序。

注意:orderedDatos 现在将是一个数组,而不是一个对象。您可能需要更改 $.each

上的某些内容

var data = '{"paises": {"145": "CHINA (53)","150": "ESPAÑA (45)","68": "HOLANDA (38)","236": "RUMANIA (52)"}}';
var datos = JSON.parse(data);

var orderedDatos = Object.entries(datos.paises).sort((a, b) => a[1].localeCompare(b[1]));

$.each(orderedDatos, function(id, valor) {
  console.log(valor[0], valor[1]); //Use valor[0] to get the key | Use valor[1] to get the value
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

文档:Object.entries() , sort()

关于javascript - JSON.parse in Javascript乱序选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50385936/

相关文章:

html - 嵌套 Web 组件的 `attachedCallback` 未在附加组件上运行

javascript - 无法使用单独的按钮调用函数两次以上

html - Bootstrap 3 输入填充问题

java - 如何将 "throw exception"添加到此代码?

arrays - 为什么需要Array类的'<'重载?

javascript - 根据同级内容的存在进行 CSS 选择

javascript - 为什么 Chrome 和 Firefox 呈现的 bootstrap CSS 与 Safari 不同

javascript - 是否有任何方法可以将对象唯一地推送到数组?

javascript - jQuery:重构为函数

arrays - 如何在 gdb 中检查这个数组的这个切片?