Javascript/jQuery/JSON/localStorage 游戏,无法按数字排序排名表

标签 javascript jquery arrays sorting

下面的代码为我完成的游戏创建了排行榜,我唯一无法做到的就是自动将分数从高到低排序。我想我需要将对象放入数组中,然后对它们进行排序,只是不知道如何进行。

function createLeaderboard() {
        var html;
        html = "<table>";
        html += "<tbody>";
        html += "<th>Username</th>";
        html += "<th>Rank</th>";
        html += "<tr>";

    for(var val in localStorage){


        if (localStorage.getItem(val) !== null && localStorage.getItem(val) !== localStorage.getItem('UsrLoggedIn')){
            var rankData = $.parseJSON(localStorage.getItem(val));

            //console.log(rankData); This will allow you to see the rank data object in your console

            $(rankData).each(function() {                   
                html += "<td>" + rankData.username + "</td>"; 
                html += "<td>" + rankData.rank + "</td> </tr>"; 
            });
        }

    }
    html += "</tbody>";
    html += "</table>";

    $('#rank').append(html);

最佳答案

您可以先检索rankData,对其进行排序,最后循环遍历排序后的数组。

function createLeaderboard() {
    var html;
    html = "<table>";
    html += "<tbody>";
    html += "<th>Username</th>";
    html += "<th>Rank</th>";
    html += "<tr>";

    var array = [];
    for (var val in localStorage) {
        if (localStorage.getItem(val) !== null && localStorage.getItem(val) !== localStorage.getItem('UsrLoggedIn')) {
            array.push($.parseJSON(localStorage.getItem(val)));
        }
    }

    array.sort(function (a, b) {
        return a.rank - b.rank;
    });

    array.forEach(function (rankData) {
        html += "<td>" + rankData.username + "</td>";
        html += "<td>" + rankData.rank + "</td> </tr>";
    });

    html += "</tbody>";
    html += "</table>";

    $('#rank').append(html);
}

关于Javascript/jQuery/JSON/localStorage 游戏,无法按数字排序排名表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53772332/

相关文章:

javascript - 如何使用 jQuery 将数组添加到数组数组?

javascript - 如何使用 AngularJS 创建基于角色的动态菜单

javascript - 使用 Javascript 选择其中一项时如何禁用复选框列表中的其他项目

javascript - 为什么将对象插入数组会修改数组中不需要的部分?

javascript - 如何为 2 个元素绑定(bind)相同的操作

javascript - 无法将事件绑定(bind)到多个 <select>,只能绑定(bind)第一个子元素

javascript - "click html/deep/#id"在 MeteorJS 模板事件处理程序中不工作

javascript - 包装器忽略 jQuery 中的隐藏 div

从目标中的特定点开始复制数组

php - 在 MySql 到 MySqli 转换后处理 MySQLi 查询的结果