.NET Core 3.1 Razor页面按值排序AJAX响应键值对对象并保留键的方案
代码修改方案
你需要先将原始对象转换为同时保留键、值的二维数组再排序,原代码中字符串用数值减号比较的逻辑不生效,且未适配希腊语字符的排序规则,修改后的完整success回调如下:
success: function (data) { // 将对象转为[[键, 值]]格式的数组,避免丢失键信息 const sortedList = Object.entries(data) .sort((entryA, entryB) => { // 按值做希腊语区域排序,保证字符排序符合预期 return entryA[1].localeCompare(entryB[1], 'el'); }); grpDrpdwn.append( $('<option>', { value: "" }).text('Select a Group') ); // 遍历排序后的数组生成下拉选项 $.each(sortedList, function (_, entry) { grpDrpdwn.append( $('<option>', { value: entry[0] }) .text(entry[1]) ); }); }
实现说明
Object.entries()会把你返回的键值对对象转为嵌套数组格式,每个子项第一位是原键、第二位是原值,不会丢失任何信息localeCompare传入希腊语区域编码el,可以保证希腊语特殊字符的排序符合本地语言规则,排序结果和你给出的预期完全一致- 遍历排序后的数组生成选项,既保留了原键作为option的value,又实现了按文本值排序的需求
内容的提问来源于stack exchange,提问作者tsosmi
相关产品推荐
相关产品推荐

