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