1. 程式人生 > >【Lua】陣列從小到大排序,然後將重複出現的數字全部刪除(後續數字往前移)

【Lua】陣列從小到大排序,然後將重複出現的數字全部刪除(後續數字往前移)

兩種實現思路:

第一種,先排序,再比較相鄰值,移除重複值

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)
end
end

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  -- 可以賦任意值
end
local result = {}
for k,v in pairs(newArray) do
table.insert(result,k)
end
table.sort(result)

for k,v in pairs(result) do
print(k,v)
end