Ir para conteúdo

isArrayEquals(a,b)


20cm

Posts Recomendados

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 por 20cm
Link para o comentário
Compartilhar em outros sites

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 por lordbug99
Link para o comentário
Compartilhar em outros sites

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.

Link para o comentário
Compartilhar em outros sites

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 por lordbug99
Link para o comentário
Compartilhar em outros sites

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 por lordbug99
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...