diff Posted May 28, 2020 Posted May 28, 2020 Hello, having issue to count duplicates in array, tried _ArrayFindAll but it doesn't find by word? _ArrayUnique only shows the words without value how many duplicates. for example I have ; Extracted array from excel which looks like something like this: #include <Array.au3> Local $aArray[0] $aArray = [John, Martin, Potter, John, Marta, Lola, John] How I can count John how many time he was duplicated, I need in return only value which is 3? Tried $name = "John" $findDup = _ArrayFindAll($aArray, $name, 0, 0, 0) MsgBox(0, "", $findDup) but doesnt work :{
Moderators Melba23 Posted May 28, 2020 Moderators Posted May 28, 2020 diff, If you declare the array correctly and read the Help file to see that _ArrayFindAll returns an array which does not display in a MsgBox, you get this: #include <Array.au3> Local $aArray = ["John", "Martin", "Potter", "John", "Marta", "Lola", "John"] $sName = "John" $aFindDup = _ArrayFindAll($aArray, $sName) _ArrayDisplay($aFindDup, "", Default, 8) MsgBox(0, "", UBound($aFindDup)) which works fine for me. M23 diff 1 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
Musashi Posted May 28, 2020 Posted May 28, 2020 Here an example also with "partial search" : #include <Array.au3> Local $sSearch, $aResult Local $aArray = ["Peter John Doe", "Martin", "Potter", "John", "Marta", "Lola", "John"] _ArrayDisplay($aArray, "SearchArray") ; *** just to display the array $sSearch = "John" ; Parameter $iCompare = 1 ==> executes a partial search ; ---------------------------------------------------------------V----------- $aResult = _ArrayFindAll($aArray, $sSearch, Default, Default, 0, 1, 0, False) _ArrayDisplay($aResult, "$iCompare = 1") ; *** just to display the array MsgBox(BitOR(4096,96), "Result 1 :", $sSearch & " was found " & UBound($aResult) & " time(s)" & @CRLF) ; Parameter $iCompare = 2 ==> comparison match same type and same value ; ---------------------------------------------------------------V----------- $aResult = _ArrayFindAll($aArray, $sSearch, Default, Default, 0, 2, 0, False) _ArrayDisplay($aResult, "$iCompare = 2") ; *** just to display the array MsgBox(BitOR(4096,96), "Result 2 :", $sSearch & " was found " & UBound($aResult) & " time(s)" & @CRLF) diff 1 "In the beginning the Universe was created. This has made a lot of people very angry and been widely regarded as a bad move."
Skysnake Posted May 28, 2020 Posted May 28, 2020 If you have database functionality, a simple SQL select count() could save you hours. Skysnake Why is the snake in the sky?
diff Posted May 28, 2020 Author Posted May 28, 2020 1 hour ago, Melba23 said: diff, If you declare the array correctly and read the Help file to see that _ArrayFindAll returns an array which does not display in a MsgBox, you get this: #include <Array.au3> Local $aArray = ["John", "Martin", "Potter", "John", "Marta", "Lola", "John"] $sName = "John" $aFindDup = _ArrayFindAll($aArray, $sName) _ArrayDisplay($aFindDup, "", Default, 8) MsgBox(0, "", UBound($aFindDup)) which works fine for me. M23 I don't know why but in my situation only works with partial search included in _ArrayFindAll with your code. Thank you guys, modified from both codes and got it working by adding partial search. 1 hour ago, Musashi said: Here an example also with "partial search" : #include <Array.au3> Local $sSearch, $aResult Local $aArray = ["Peter John Doe", "Martin", "Potter", "John", "Marta", "Lola", "John"] _ArrayDisplay($aArray, "SearchArray") ; *** just to display the array $sSearch = "John" ; Parameter $iCompare = 1 ==> executes a partial search ; ---------------------------------------------------------------V----------- $aResult = _ArrayFindAll($aArray, $sSearch, Default, Default, 0, 1, 0, False) _ArrayDisplay($aResult, "$iCompare = 1") ; *** just to display the array MsgBox(BitOR(4096,96), "Result 1 :", $sSearch & " was found " & UBound($aResult) & " time(s)" & @CRLF) ; Parameter $iCompare = 2 ==> comparison match same type and same value ; ---------------------------------------------------------------V----------- $aResult = _ArrayFindAll($aArray, $sSearch, Default, Default, 0, 2, 0, False) _ArrayDisplay($aResult, "$iCompare = 2") ; *** just to display the array MsgBox(BitOR(4096,96), "Result 2 :", $sSearch & " was found " & UBound($aResult) & " time(s)" & @CRLF)
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now