Jump to content

Recommended Posts

Posted

This is my contribution.

 

Returns a unique 2-dimensional array on a specific column

 

; example
Local $aArray2D[6][2] = [[1, "A"],[2, "B"],[3, "C"],[1, "F"],[2, "G"],[3, "H"]]
_ArrayDisplay($aArray2D, "$aArray2D")
Local $iColumUnique = 0
$aArray2Dresult = ArrayUniqueByColum($aArray2D, $iColumUnique)
_ArrayDisplay($aArray2Dresult, "$aArray2Dresult")


; #FUNCTION# ============================================================================
; Name.............:    ArrayUniqueByColum
; Description ...:  returns a unique 2-dimensional array on a specific column
;                   restituisce un array 2d unico su colonna specifica
; Syntax...........:    ArrayUniqueByColum($aArray2D, $iColumUnique)
; Parameters ...:   $aArray2D - The Array 2d  to use
;                   $iColumUnique - column to be taken as a single reference
; Return values:    Success - Returns a 2-dimensional array
; Author .........:     cdeb
; Version ........:     0.01
; =======================================================================================
Func ArrayUniqueByColum($aArray2D, $iColumUnique)

    Local $aArray2Dresult[0][UBound($aArray2D, $UBOUND_COLUMNS)]

    Local $aArray1DUnique = _ArrayUnique($aArray2D, $iColumUnique, Default , Default , 0)
    ;_ArrayDisplay($aArray1DUnique, "$aArray1DUnique")

    For $r = 0 To UBound($aArray1DUnique)-1
        ;ConsoleWrite('----------------- $aArray1DUnique['&$r&'] = "'&$aArray1DUnique[$r]&'" -------------------'&@CRLF)
        For $i = 0 To UBound($aArray2D)-1
            ;ConsoleWrite('>> $aArray2D['&$i&'][$iColumUnique] = "'&$aArray2D[$i][$iColumUnique] &""&@CRLF)
            If $aArray2D[$i][$iColumUnique] == $aArray1DUnique[$r] Then
                ReDim $aArray2Dresult[UBound($aArray2Dresult, $UBOUND_ROWS)+1][UBound($aArray2Dresult, $UBOUND_COLUMNS)]
                For $c = 0 To UBound($aArray2D, $UBOUND_COLUMNS)-1
                    $aArray2Dresult[UBound($aArray2Dresult, $UBOUND_ROWS)-1][$c] = $aArray2D[$i][$c]
                Next
                ExitLoop
            EndIf
        Next
    Next
    ;_ArrayDisplay($aArray2Dresult, "$aArray2Dresult")
    Return($aArray2Dresult)
EndFunc   ;==>ArrayUniqueByColum

 

INPUT:
[0]|1|A
[1]|2|B
[2]|3|C
[3]|1|F
[4]|2|G
[5]|3|H

 

OUTPUT:
[0]|1|A
[1]|2|B
[2]|3|C

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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...