Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript中的JSON.parse无序选择_Javascript_Html_Arrays_Json_Ajax - Fatal编程技术网

Javascript中的JSON.parse无序选择

Javascript中的JSON.parse无序选择,javascript,html,arrays,json,ajax,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":"

我从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现在将是一个数组,而不是一个对象。您可能需要更改$上的某些内容。每个

var数据={paises:{145:CHINA 53150:ESPAñA 45,68:HOLANDA 38236:RUMANIA 52}}}; var datos=JSON.parsedata; var orderedDatos=Object.entriesdatos.paises.sorta,b=>a[1].localeCompareb[1]; $.eachordedaddatos,functionid,valor{ console.logvalor[0],valor[1];//使用valor[0]获取密钥|使用valor[1]获取值 }; 您可以使用它返回一个数组,然后您可以使用方法array-using获得所需的结果

演示

var datos={ 派斯:{ 145:中国53,, 150:ESPAñA 45, 68:HOLANDA 38, 236:罗马尼亚52 } }; 设paises=Object.entriesdatos.paises.sorta,b=>a[1].localeCompareb[1]; $.eachpaises、functionindex、value{ $informe-id.append${ 值:值[0], 文本:值[1], }; };
你好我得到了这个错误:```jquery.min.js:2未捕获的类型错误:无法将未定义或null转换为函数处的object.entries。您在哪一行代码中得到这个错误?这是在浏览器上,而不是像node.js这样的服务器上,对吗@pablogupii在这一行中,var orderedDatos=Object.entriesdatos.paises.sorta,b=>a[0]-b[0];Chrome浏览器中出现错误,此javascript在CakePhp项目中运行。是否对datos变量进行了JSON.parse?确定,使用JSON.parse对象已创建,但未按正确顺序打印。第一个国家是荷兰,应该是中国。