【Lua】数组从小到大排序,然后将重复出现的数字全部删除(后续数字往前移)

xiaoxiao2021-02-28  44

两种实现思路:

第一种,先排序,再比较相邻值,移除重复值

local testTable = {2,1,3,3,3,3,3,7,9,6,5}function test(list) table.sort(list) local index = 1 while list[index+1] do if list[index] == list[index+1] then table.remove(list,index+1) else index = index + 1 end end for k,v in pairs(list) do print(k,v) endend

test(testTable)

第二种,先去重,再排序。将需要去重的table的value值作为一个新table的key值,任意对该table赋值。因为在lua中,table的key值不允许重复。

local testTable  = {2,1,3,3,3,3,3,7,9,6,5}local newArray = {}for k,v in pairs(testTable ) do newArray[v] = 0  -- 可以赋任意值endlocal result = {}for k,v in pairs(newArray) do table.insert(result,k)endtable.sort(result)for k,v in pairs(result) do print(k,v)end

转载请注明原文地址: https://www.6miu.com/read-2614648.html

最新回复(0)