Lua:删除重复元素。

我在 Lua 中有一个表

test = {1,2,4,2,3,4,2,3,4,"A", "B", "A"}

我想删除表中的所有重复元素。

输出应该是

test = {1,2,4,3,"A","B"}

编辑:

我试过了:

> items = {1,2,4,2,3,4,2,3,4,"A", "B", "A"}
> flags = {}
> for i=1,table.getn(items)  do
if not flags[items[i]] then
      io.write(' ' .. items[i])
      flags[items[i]] = true
   end
>> end
 1 2 4 3 A B>

现在它可以正常工作了。 感谢答案和评论。

点赞
用户847349
用户847349
local test = {1,2,4,2,3,4,2,3,4,"A", "B", "A"}

-- 生成唯一键
local hash = {}
for _,v in ipairs(test) do
    hash[v] = true
end

-- 将键转换回值
local res = {}
for k,_ in pairs(hash) do
    res[#res+1] = k
end

-- 1 2 3 4 A B
for _,v in ipairs(res) do
    print(v)
end

test = res

尝试解决这个问题的方法是使用 Lua 编程语言编写以上代码。

2013-11-19 08:49:01
用户1421665
用户1421665

与 @Dimitry 给出的示例类似,但只有一个循环

local test = {1,2,4,2,3,4,2,3,4,"A", "B", "A"}
local hash = {}
local res = {}

for _,v in ipairs(test) do
   if (not hash[v]) then
       res[#res+1] = v -- 如果您希望,可以在此处打印而不是保存到结果表中
       hash[v] = true
   end

end
2013-11-19 09:06:28
用户1850358
用户1850358
items = {1,2,4,2,3,4,2,3,4,"A", "B", "A"}
flags = {}
for i=1,table.getn(items)  do
if not flags[items[i]] then
      io.write(' ' .. items[i])
      flags[items[i]] = true
end

结果输出 -

1 2 4 3 A B>
2013-11-19 13:19:14
用户9192452
用户9192452
local xx = {'a','b','c','d','a','d','f','g','a'}
table.sort(xx)
local result = {}

for key,value in ipairs(xx) do
  if value ~=xx[key+1] then
    table.insert(result,value)
  end
end

for key,value in ipairs(result) do
  print(key,value)
end
local xx = {'a','b','c','d','a','d','f','g','a'}
table.sort(xx)  -- 将 xx 数组按字母顺序排序
local result = {}  -- 定义一个新数组 result

for key,value in ipairs(xx) do  -- 遍历 xx 数组
  if value ~=xx[key+1] then  -- 判断当前元素是否与下一个元素相等
    table.insert(result,value)  -- 若不相等,则将当前元素插入到 result 数组中
  end
end

for key,value in ipairs(result) do  -- 遍历 result 数组
  print(key,value)  -- 打印数组中的索引和值
end
2018-06-28 22:47:10