Página 1 de 1

comparação de array

Enviado: 12 Ago 2016 15:42
por MARCELOG
Olá pessoal,
tem algum jeito fácil para verificar se dois arrays possuem os mesmos elementos?

Obrigado.

MarceloG

a:={'A','B','C'}
b:={'A','B','C'}

if a == b

alert('São iguais!')

endif

comparação de array

Enviado: 12 Ago 2016 15:44
por asimoes
Não testei.

AEval( aArray1, {|x| QQOut(x) } ) = AEval( aArray2, {|x| QQOut(x) } )

comparação de array

Enviado: 12 Ago 2016 17:34
por rossine
Olá Marcelo,

Tenho uma função que uso aqui e funciona bem. Veja se é isto que você precisa.

Veja um exemplo que montei:

Código: Selecionar todos


function main

local a, b

cls

a:={'A','B','C'}
b:={'A','B','C'}

? "Comparando arrays com elementos tipo STRING"

? hb_valtoexp(a) == hb_valtoexp(b), hb_valtoexp(a) + "==" + hb_valtoexp(b)

? iif( CompArray( a, b ), "Sao iguais!", "Sao Diferentes!" )
? "------------------------------------------------"

a:={'A','B','C'}
b:={'A','B','C','D'}

? hb_valtoexp(a) == hb_valtoexp(b), hb_valtoexp(a) + "==" + hb_valtoexp(b)

? iif( CompArray( a, b ), "Sao iguais!", "Sao Diferentes!" )
? "------------------------------------------------"

? "Comparando arrays com elementos e Sub-Elementos do tipo STRING / NUMERICO"

a:={'A','B','C',{1,2,3,"X"}}
b:={'A','B','C',{1,2,3,"X"}}

? hb_valtoexp(a) == hb_valtoexp(b), hb_valtoexp(a) + "==" + hb_valtoexp(b)

? iif( CompArray( a, b ), "Sao iguais!", "Sao Diferentes!" )
? "------------------------------------------------"

a:={'A','B','C',{1,2,3}}
b:={'A','B','C',{1,2,3,4}}

? hb_valtoexp(a) == hb_valtoexp(b), hb_valtoexp(a) + "==" + hb_valtoexp(b)

? iif( CompArray( a, b ), "Sao iguais!", "Sao Diferentes!" )
? "------------------------------------------------"

wait "Tecle ENTER..."

cls

a:={'A','B','C',{1,2,3,4,"X"}}
b:={'A','B','C',{1,2,3,4,"X"}}

? hb_valtoexp(a) == hb_valtoexp(b), hb_valtoexp(a) + "==" + hb_valtoexp(b)

? iif( CompArray( a, b ), "Sao iguais!", "Sao Diferentes!" )
? "------------------------------------------------"

a:={'A','B','C',{1,2,3,4,"X"}}
b:={'A','B','C',{1,2,3,4,"Z"}}

? hb_valtoexp(a) == hb_valtoexp(b), hb_valtoexp(a) + "==" + hb_valtoexp(b)

? iif( CompArray( a, b ), "Sao iguais!", "Sao Diferentes!" )
? "------------------------------------------------"

a:={'A','B','C',{1,2,3,4,"X",{"a",1}}}
b:={'A','B','C',{1,2,3,4,"X",{"a",1}}}

? hb_valtoexp(a) == hb_valtoexp(b), hb_valtoexp(a) + "==" + hb_valtoexp(b)

? iif( CompArray( a, b ), "Sao iguais!", "Sao Diferentes!" )
? "------------------------------------------------"

a:={'A','B','C',{1,2,3,4,"X",{"a",1}}}
b:={'A','B','C',{1,2,3,4,"X",{"a",2}}}

? hb_valtoexp(a) == hb_valtoexp(b), hb_valtoexp(a) + "==" + hb_valtoexp(b)

? iif( CompArray( a, b ), "Sao iguais!", "Sao Diferentes!" )

return NIL

******************
function CompArray( a1, a2 )
******************

local lRet := .T., v

if valtype(a1) != "A" .or. valtype(a1) != valtype(a2) .or. len(a1) != len(a2)
   return .F.
endif

aeval( a1, {|e,i| iif( lRet, lRet := iif(( v := valtype(e)) == "A", CompArray( e, a2[i] ), v == valtype(a2[i]) .and. ( i = 1 .and. upper(hb_valtostr(e)) == upper(hb_valtostr(a2[i])) .or. e == a2[i] ) ), NIL ) } )

return lRet

T+

comparação de array

Enviado: 12 Ago 2016 17:40
por asimoes
Tem esta comparação também:

Código: Selecionar todos

 aArray1:={"A", "B", "C"}
 aArray2:={"A", "B", "C"}

 cVar1:=""
 cVar2:=""
 AEval( aArray1, {|x| cVar1+=x } )
 AEval( aArray2, {|x| cVar2+=x } )
 IF cVar1 == cVar2
    hwg_MsgInfo("Igual")
 ENDIF

comparação de array

Enviado: 15 Ago 2016 11:25
por MARCELOG
Olá,
resolvi a situação utilizando a função "valtoprg" em relação às arrays.

Obrigado a todos.

MarceloG