distinct

LUA

distinct

<lst>:distinct()

<lst>:distinct(foo(item, pos))

Rimuove gli elementi duplicati. Utilizza la funzione di comparazione del lua (==) nella prima versione. Attenzione: le tabelle non vengono confrontate per contenuto ma per riferimento. Quindi due tabelle identiche per contenuto risultano diverse per il comparatore. Nel secondo caso è possibile passare la funzione che genera una key univoca per il confronto degli elementi.

Esempio 221. Esempio distinct

alert(XTable({"a","a","b", "c", "d", "d", "d", "e"}):distinct():astable())--> {"a", "b", "c", "d", "e"}
local orders = {
 {id=1, product="Computer", price=1000, year=2010},
 {id=1, product="Book",     price=50,   year=2012},
 {id=3, product="TV",       price=800,  year=2011},
 {id=5, product="Computer", price=1000, year=2010},
 ...  
}  
     
local a = XTable(orders)
     -- rimuove gli ementi duplicati ignorando l'id
     :distinct(function(item, pos) return format("%s-%d-%d", item.product, item.price, item.year) end)    
     :astable()
--> {
     {id=1, product="Book",     price=50,   year=2012},
     {id=3, product="TV",       price=800,  year=2011},
     {id=5, product="Computer", price=1000, year=2010},
   }