intersect

<lst>:intersect(lst1, lst2, ..., lstn, [foo(item, pos)])

Esegue l'intersezione di tutte le liste. Mantiene solo gli elementi presenti in tutte le liste. Attenzione perché utilizza la comparazione del lua e quindi non funzione per le tabelle che vengono passate per riferimento.

Nel secondo caso è possibile passare la funzione che genera una key univoca per il confronto degli elementi.

Esempio 222. Esempio intersect

local a = {"a","a","b","e"}
a = XTable(a):intersect({"a", "b", "e"}, {"a", "e"}):astable())
--> {"a", "e"}
local orders = {
  {id=2, product="Computer", price=1000, year=2010},
  {id=2, product="Book",     price=50,   year=2012},
  {id=2, product="TV",       price=800,  year=2011},
}
local orders1 = {
  {id=4, product="Computer", price=1000, year=2010},
  {id=4, product="Book",     price=50,   year=2012},
}
local x = (XTable(orders)
            :intersect(orders1,
                function(item, pos) return format("%s-%d-%d", item.product, item.price, item.year) end)                
            :astable()
--> {{id=4, product="Computer", price=1000, year=2010},
     {id=4, product="Book",     price=50,   year=2012}}