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

Lua新手求助:如何返回排序后表的索引字符串以获取最少存款人

获取Lua表中存款最少的账户名

针对你的需求,分两种表结构给出解决方案:

方案1:保留原哈希表结构

你最初的表是字符串键的哈希表,table.sort无法直接排序这类表(它只处理整数索引的数组部分),直接遍历找最小值更高效:

BankAccount = {}
BankAccount["Tom"] = 432
BankAccount["Henry"] = 55
BankAccount["Kath"] = 875

local min_name, min_amount = nil, math.huge
-- 用pairs遍历所有键值对
for name, amount in pairs(BankAccount) do
    if amount < min_amount then
        min_amount = amount
        min_name = name
    end
end

print(min_name) -- 输出 Henry

逻辑:初始化最小金额为无穷大,遍历每个账户时更新最小金额及对应名字。

方案2:使用嵌套数组结构

你看到的嵌套数组是整数索引的数组,适合用table.sort自定义排序规则:

BankAccount = {
    {"Tom", 432},
    {"Henry", 55},
    {"Kath", 875},
}

-- 自定义排序:按存款金额从小到大排列
table.sort(BankAccount, function(a, b)
    return a[2] < b[2] -- a[2]是子表的存款金额
end)

-- 排序后第一个元素即为存款最少的账户
print(BankAccount[1][1]) -- 输出 Henry

逻辑:给table.sort传入比较函数,指定按子表的第二个元素(存款)排序,排序后取第一个子表的第一个元素(名字)。

两种结构的适用场景

  • 哈希表:适合快速通过名字查询存款(比如BankAccount["Tom"]直接取值)
  • 嵌套数组:适合需要排序、按固定顺序遍历的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 16:46:37