You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按字符串值排序输出至HTML:修正JSON按name排序的JS代码

解决按"name"字段对JSON数组排序并渲染到HTML表格的问题

我在社区翻了好多相关话题,都没找到能直接用的解决方案。自己写了个脚本,原本是想在JavaScript里导入JSON数组,然后把数据输出到HTML表格里,核心需求是按name字段对JSON数据做排序。结果之前写的字符串比较代码不仅没法正常运行,还直接把程序搞崩了,后来多亏Mihai帮忙,代码终于修复能用了。

修复后的完整JavaScript代码

$(function() {
  $.getJSON('./scripts/items.json', function(data) {
    function compareStrings(a, b) {
      // 采用大小写不敏感的比较方式
      a = a.toLowerCase();
      b = b.toLowerCase();
      return a.localeCompare(b);
    }

    data.birra.sort(function(a, b) {
      return compareStrings(a.name, b.name);
    });

    $.each(data.birra, function(i, f) {
      var tblRow = "<tr>" +
                   "<td>" + f.name + "</td>" +
                   "<td>" + f.description + "</td>" +
                   "</tr>";
      $(tblRow).appendTo("#table-birra tbody");
    });
  });
});

对应的JSON数据(items.json)

{
  "birra": [
    {
      "id": 1,
      "name": "Corona",
      "description": "La Corona Extra, è una birra Pale lager messicana, prodotta dal birrificio Cerveceria Modelo e, limitatamente alla produzione destinata all'esportazione nel territorio statunitense, dalla Constellation Brands",
      "country": "Messico"
    },
    {
      "id": 2,
      "name": "Birra Moretti",
      "description": "Birra Moretti è stata un'azienda specializzata nella produzione di birra. Nasce nel 1859 a Udine con il nome di Fabbrica di Birra e Ghiaccio. Fu fondata da Luigi Moretti, un imprenditore, la cui famiglia era dedita al commercio e all'ingrosso di bevande e generi alimentari, il marchio è stato acquisito dalla società olandese Heineken nel 1996.",
      "country": "Italia"
    },
    {
      "id": 3,
      "name": "Beck's",
      "description": "Beck's (ufficialmente \"Brauerei Beck & Co KG\") è un birrificio tedesco",
      "country": "Germania"
    },
    {
      "id": 4,
      "name": "Forst",
      "description": "Birra Forst (in tedesco Spezialbier-Brauerei Forst) è il maggiore produttore italiano indipendente[1] di birra. Detentore anche del marchio Menabrea.",
      "country": "Italia"
    },
    {
      "id": 5,
      "name": "Tabucchi",
      "description": "Birra italiana prodotta artigianalmente, molto maltata",
      "country": "Italia"
    }
  ]
}

关键修复点说明

  • 实现了大小写不敏感的字符串比较函数compareStrings:先把字符串统一转成小写,再用localeCompare()做自然排序,避免了大小写差异导致的排序混乱
  • 调整了执行顺序:确保排序逻辑在遍历渲染表格前完成,保证页面输出的是已排序的数据
  • 修正了原代码中的语法问题,消除了导致程序崩溃的隐患

内容的提问来源于stack exchange,提问作者Darius Pum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:17:38