如何使用 Jquery 按值而不是按键打印 HashMap

How to print an HashMap by value and not by key with Jquery

这是将地图列表到 jsp 和 jQuery.

的代码
function getCustomerMap() {
    $.ajax({
        url: serverUrl + "/getMap",
        success: function (data) {
            var map = JSON.parse(data);
            $.each(map, function (key, value) {
                $('#users').append('<li data-user="' + key + '"><a>' +  value.name + '</a></li>');                    
            });

这就是 HashMap JSON 变成 jsp:

的方式

如您所见,地图是按名称排序的。

但是 HashMap 是这样列出的:

地图是从小到大排列的!

我希望地图被列为 jsp..

当客户端接收到地图的字符串表示时,它变成了一个普通的旧 javascript 对象,键是它的字段。它们的自然排序顺序是“1”、“2”、“3”、“4”、“5”、“6”。这就是它按该顺序显示的原因。以您想要的方式显示它的一种方法是将其转换为对象数组(地图值),并按名称排序 javascript:

function getCustomerMap() {
    $.ajax({
        url: serverUrl + "/getMap",
        success: function (data) {
            var map = JSON.parse(data);
            var arr = new Array();
            for (var key in map)
                arr.push(map[key]); // add the map values to the array

            // sort the array by name
            arr.sort(function(a, b){
                if (a.name < b.name)
                    return -1;
                if (a.name > b.name)
                    return 1;
                return 0;
            });

            // iterate by array index and append the list items.
            // now you use the id field of the objects as your data-user values.
            for (var i in arr)
                $('#users').append('<li data-user="' + arr[i].id + '"><a>' + arr[i].name + '</a></li>');
        }
    });
}