distinct
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.
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},
}