【问题标题】:Lua Compare Multiple Table ValuesLua 比较多个表值
【发布时间】:2021-04-03 09:00:41
【问题描述】:

你好,我有一张类似的桌子

list[i].font_name

i 是一个未定义的数字,我想通过表格解析并比较是否有相同的字符串。然后改字符串

喜欢

if list[1].font_name == list[2].font_name then  
  list[2].font_name = list[2].font_name..'2'
end

这样的匹配可以不止一个

list[1].font_name
list[2].font_name
list[3].font_name

。 感谢大家抽出时间在网上回答问题:) 圣诞快乐

【问题讨论】:

  • 你的问题是什么?您似乎知道如何检查两个值是否相等。遍历表的琐碎任务在任何 Lua 教程/书中都有解释。

标签: string lua compare


【解决方案1】:

使用哈希表计算您看到每个 font_name 的次数并循环遍历 list。这是可行的,因为如果两个值比较相等(没有元方法),它们被认为是相同的键。

-- This keeps track of duplicates.
local counter = {}

for i, v in ipairs(list) do
  local font = v.font_name

  -- Increment the count for this font.
  local count = (counter[font] or 0) + 1
  counter[font] = count

  if count > 1 then
    v.font_name = font .. count
  end
end

【讨论】:

  • 感谢 Luther 回答我,它有效 :) 我之前用两个 for 循环制作了另一个解决方案,然后比较桌子上的每个项目,如果发现重复,它会重命名。由于您只使用一个 for 循环,我认为它会更快,但我对其进行了基准测试,令人惊讶的是它比两个 for 循环慢。无论如何我都会记住这个技巧谢谢! :)
猜你喜欢
  • 2012-03-11
  • 2015-05-03
  • 2012-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-08
  • 1970-01-01
相关资源
最近更新 更多