Edición de «Módulo:TableTools»
Puedes deshacer la edición. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces publica los cambios para así efectuar la reversión.
Revisión actual | Tu texto | ||
Línea 38: | Línea 38: | ||
------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ||
function p.isNan(v) | function p.isNan(v) | ||
return type(v) == 'number' and v | return type(v) == 'number' and tostring(v) == '-nan' | ||
end | end | ||
Línea 64: | Línea 64: | ||
-- removed, but otherwise the array order is unchanged. | -- removed, but otherwise the array order is unchanged. | ||
------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ||
function p.removeDuplicates( | function p.removeDuplicates(t) | ||
checkType('removeDuplicates', 1, | checkType('removeDuplicates', 1, t, 'table') | ||
local isNan = p.isNan | local isNan = p.isNan | ||
local ret, exists = {}, {} | local ret, exists = {}, {} | ||
for _, v in ipairs( | for _, v in ipairs(t) do | ||
if isNan(v) then | if isNan(v) then | ||
-- NaNs can't be table keys, and they are also unique, so we don't need to check existence. | -- NaNs can't be table keys, and they are also unique, so we don't need to check existence. | ||
Línea 337: | Línea 337: | ||
-- | -- | ||
-- Transposes the keys and values in an array. For example, {"a", "b", "c"} -> | -- Transposes the keys and values in an array. For example, {"a", "b", "c"} -> | ||
-- {a = 1, b = 2, c = 3} | -- {a = 1, b = 2, c = 3}. | ||
------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ||
function p.invert(arr) | function p.invert(arr) | ||
checkType("invert", 1, arr, "table") | checkType("invert", 1, arr, "table") | ||
local map = {} | local map = {} | ||
for i, v in ipairs(arr) do | for i, v in ipairs(arr) do | ||
map[v] = i | |||
end | end | ||
Línea 358: | Línea 355: | ||
-- Creates a set from the array part of the table. Indexing the set by any of the | -- Creates a set from the array part of the table. Indexing the set by any of the | ||
-- values of the array returns true. For example, {"a", "b", "c"} -> | -- values of the array returns true. For example, {"a", "b", "c"} -> | ||
-- {a = true, b = true, c = true} | -- {a = true, b = true, c = true}. | ||
------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ||
function p.listToSet( | function p.listToSet(t) | ||
checkType("listToSet", 1, | checkType("listToSet", 1, t, "table") | ||
local set = {} | local set = {} | ||
for _, | for _, item in ipairs(t) do | ||
set[item] = true | |||
end | end | ||