20

isArrayEquals(a,b)

Por 20cm, 17 de jan. de 2013 em Mods, funções e outros

script
9
1k
20cm2
17 de janeiro de 2013 às 00:46

O que ela faz é comparar duas matrizes unidimensionais [vlw lf], e retornar true caso os valores forem iguais

Bom, há um tempo eu já ia fazer essa função, ela não é difícil, mas eu ia fazer ela com um for in pairs e comparando cada valor e tal.

Mas eu resolvi entrar na onda de deixar os scripts o mais curto possível, fugindo da POG, e disso:

function isArrayEquals(a,b)
for x,i in pairs(a) do
if i ~= b[x] then
return false
end
end
return true
end

 

Foi pra isso:

function isArrayEquals(a,b)
return table.concat(a) == table.concat(b)
end

 

Exemplo:

local array1 = {1,2,3,4,0}
local array2 = {1,2,3,4,0}
print(tostring(compair(array1,array2)))

 

No caso ia printar true, mas, se qualquer valor do array2 fosse diferente do array1 (na mesma posição) printaria false

Numa rápida pesquisa no google não achei a função aqui, mas espero que eu tenha conseguido deixar o menor possível xD

 

Espero que seja útil, pelo menos pra mim vai ser, comparar vetores é daora mano

Editado Janeiro 17 por 20cm

SlicerS
17 de janeiro de 2013 às 10:28

eita mano as 2 formas de comparaçao ficaram muito bem feitas kkk nunca ia pensar nessa segunda ae... vlw por disponibilizar ^^

VincV
17 de janeiro de 2013 às 13:55

a segunda n funciona se o index n for continuo(concat so pega a parte que é em seguencia (1,2,3...))

ex: {['a'] = 2,1} {1, [3] = 1} seriam iguais

a primeira se b tiver outro elemento que n contenha em a ainda sim vai ser considerado igual,então é melhor vc usar recursividade invertendo a por b(ou outro metodo)

ex: {1} e {1,2} seria considerado igual

ficando assim

function isArrayEquals(a,b,recheck)
 for x,i in pairs(a) do
if i ~= b[x] then
  return false
end
 end
 if not recheck then
return isArrayEquals(b,a,true)
 else
return true
 end
end

Editado Janeiro 17 por lordbug99

SlicerS
17 de janeiro de 2013 às 14:07

achu q vc n leu oq ele flo..

'O que ela faz é comparar duas matrizes unidimensionais'

AlexandreKGA
17 de janeiro de 2013 às 14:23

Bela função obrigado por disponibilizar.

 

Apesar de eu só ter entendido um pouco pra q server,vou dar uma relida para entender melhor.

 

xD

20cm2
17 de janeiro de 2013 às 14:27

Na verdade é mesmo só para unidimensionais, mas ele deixou mais completinho... Acho que ficou melhor mesmo, ele compara todo o tipo que eu testei... Parabéns.

VincV
17 de janeiro de 2013 às 14:36

achu q vc n leu oq ele flo..

'O que ela faz é comparar duas matrizes unidimensionais'

se n sabe n fala

{ ["a"] = 1} é unidimensional

multi seria {{1,2},{4,}}

Editado Janeiro 17 por lordbug99

20cm2
17 de janeiro de 2013 às 14:41

ok, você "venceu", agora relaxa mano '-'

VincV
17 de janeiro de 2013 às 14:47

n cara to falando como slicer,to de boa, é que esse Slicer vem me critica sem nem sabe o que uma matris unidimensional

 

essa que editei so coloquei uma recursividade,e ela ainda n server para mutidimensinais,cuntinua sendo para unidimesionais

 

-edit-

se fosse pra competi com alguem ia no duelos kkk

é so critica construtiva

Editado Janeiro 17 por lordbug99