Javascript中的JSON.parse无序选择
我从api收到如下Json: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":"
{
"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对象已创建,但未按正确顺序打印。第一个国家是荷兰,应该是中国。