LUA - 表中最常见的项目

标签 lua

我有一个如下表,我不需要知道哪个产品卖了多少,我只想知道哪个产品最受欢迎。你知道哪种方法是最好的方法吗? 就像在下面的例子中,知道因为产品“蓝色”中的 3 个已经售出,所以它是最受欢迎的

local products = {}

products["430373bb5b7a40a04f9"] = "red"
products["0dce4263af4b5cfe0de"] = "red"
products["cf2559afb736c1eb1bc"] = "green"
products["abc4d248541c3386c88"] = "blue"
products["bb9386c65270948ebee"] = "blue"
products["b193fba741cd646a9c0"] = "blue"

最佳答案

此示例将计算单次通过的销售数量。

local products = {}

products["430373bb5b7a40a04f9"] = "red"
products["0dce4263af4b5cfe0de"] = "red"
products["cf2559afb736c1eb1bc"] = "green"
products["abc4d248541c3386c88"] = "blue"
products["bb9386c65270948ebee"] = "blue"
products["b193fba741cd646a9c0"] = "blue"

local pop = {}

for k,v in pairs(products) do
   pop[v] = (pop[v] or 0) + 1
end

-- if you need to sort by sales then: 

local pop_s = {}
for k,v in pairs(pop) do
    pop_s[#pop_s+1] = { item=k, sales=v}
end
table.sort(pop_s, function (a,b)  return a.sales>b.sales end)
for k,v in pairs(pop_s) do
   print(v.item,v.sales)
end

结果:

blue    3
red    2
green    1

关于LUA - 表中最常见的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75121895/

相关文章:

c++ - 在 LuaSQL 代码上断言 C/C++

loops - 如何在特定点循环播放ROBLOX音频?

将 Lua 表转换为 C 数组?

lua - 添加延迟/定时器

lua - 如何引用在 Corona (Lua) 的表数组中创建的图像?

lua - Lua中的字符串到表

c++ - Luabind: "No matching overload found, candidates:"

c++ - 无法从c++/lua函数调用成员函数

lua - redis + lua 可能有哈希交集吗?

c - Lua - lua_tostring() 返回奇怪的结果