【Lua】陣列從小到大排序,然後將重複出現的數字全部刪除(後續數字往前移)
阿新 • • 發佈:2019-02-15
兩種實現思路:
第一種,先排序,再比較相鄰值,移除重複值
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