Jump to content
Sign in to follow this  
HeidiR

Array Compare

Recommended Posts

HeidiR

If there an easy way to compare two 1D arrays similar to StringCompare ( "string1", "string2")?

Like: ArrayCompare ($ar1, $ar2)


HeidiRFind free applications, code examples and more on my site at:http://heidisdownloads.com/

Share this post


Link to post
Share on other sites
Valuater

Search help for any of these

;_ArrayAdd

;_ArrayBinarySearch

;_ArrayConcatenate

;_ArrayDelete

;_ArrayDisplay

;_ArrayFindAll

;_ArrayInsert

;_ArrayMax

;_ArrayMaxIndex

;_ArrayMin

;_ArrayMinIndex

;_ArrayPop

;_ArrayPush

;_ArrayReverse

;_ArraySearch

;_ArraySort

;_ArraySwap

;_ArrayToClip

;_ArrayToString

;_ArrayTrim

8)


NEWHeader1.png

Share this post


Link to post
Share on other sites
SmOke_N

Search help for any of these

;_ArrayAdd

;_ArrayBinarySearch

;_ArrayConcatenate

;_ArrayDelete

;_ArrayDisplay

;_ArrayFindAll

;_ArrayInsert

;_ArrayMax

;_ArrayMaxIndex

;_ArrayMin

;_ArrayMinIndex

;_ArrayPop

;_ArrayPush

;_ArrayReverse

;_ArraySearch

;_ArraySort

;_ArraySwap

;_ArrayToClip

;_ArrayToString

;_ArrayTrim

8)

Or use the search feature on the forum?

Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

Share this post


Link to post
Share on other sites
HeidiR

Thanks for the info. I didn't find what I was looking for so I wrote my own (below).

CODE
Func array_compare($ar1, $ar2)

Local $str1="", $str2=""

For $i = 0 to ubound($ar1) -1

$str1 &= $ar1[$i]

Next

For $i = 0 to ubound($ar2) -1

$str2 &= $ar2[$i]

Next

Return StringCompare($str1, $str2, 1)

Endfunc


HeidiRFind free applications, code examples and more on my site at:http://heidisdownloads.com/

Share this post


Link to post
Share on other sites
-Ultima-

You can probably do a bit better than that :P

Func _ArrayStringCompare($avArray1, $avArray2, $iFlag = 0)
    Local $iUpper = UBound($avArray1)
    If UBound($avArray2) < $iUpper Then $iUpper = UBound($avArray2)

    Local $iCmp
    For $i = 0 To $iUpper - 1
        $iCmp = StringCompare($avArray1[$i], $avArray2[$i], $iFlag)
        If $iCmp Then Return $iCmp
    Next

    Return 0
EndFunc

Your method would fail on

$avArray1 = ["a", "b"]

$avArray2 = ["ab"]

It would report the two arrays to be equal (they're not).

Edited by -Ultima-

[ WinINet.au3 | Array.au3 (Optimized) | _UnixTimeParse() ]

Share this post


Link to post
Share on other sites
therks

I wrote a set of functions for dumping information from variables a while ago. You can find it here. If you include that file, you can do something like this:

#include <Variable.au3>

$array = StringSplit('Hello', '')
$array2 = StringSplit('Hello!', '')

If _VarDump($array) == _VarDump($array2) Then
; Match
EndIf

I don't know how efficient that would be though.

*Off topic note: _VarDump doesn't work on structs in the current version of AutoIt.

Share this post


Link to post
Share on other sites
HeidiR

Thanks for the code suggestions guys! They were very helpful! :-)


HeidiRFind free applications, code examples and more on my site at:http://heidisdownloads.com/

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.