假設 一個小怪 有三種屬性,等級(level)、品質(quality)、id(pid)函數
咱們須要對他們進行排序,兩種排序狀況,第一是單一屬性排序,好比按照等級進行排序,或者多種屬性進行優先級排序。lua
local function testSort(a,b) return tonumber(a.level)> tonumber(b.level) end table.sort(tableName,testSort)
需求以下:spa
--排列順序優先級從高到低依次爲: --第一:等級由高到低; --第二:稀有度由高到低; --第三:夥伴ID從高到低。
對於lua table的排序,sort函數的使用。好比先按照等級排序,而後按照品質,再按照ID排序。實現方法以下:code
--排列順序優先級從高到低依次爲: --第一:等級由高到低; --第二:稀有度由高到低; --第三:夥伴ID從高到低。 local function sort_(a, b) local r local al = tonumber(a.level) local bl = tonumber(b.level) local aq = tonumber(a.data.quality) local bq = tonumber(b.data.quality) local aid = tonumber(a.pid) local bid = tonumber(b.pid) if al == bl then if aq == bq then r = aid > bid else r = aq > bq end else r = al > bl end return r end
table.sort(tableName,sort_)
能夠參考sort函數實現的原理理解上面的代碼。 blog
若是使用 return al >= bl 這種返回值的話,是錯誤的:以下排序
local function testSort(a,b) return tonumber(a.level)>= tonumber(b.level) end