diff Posted May 28, 2020 Share 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 :{ Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted May 28, 2020 Moderators Share 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 Link to comment Share on other sites More sharing options...
Musashi Posted May 28, 2020 Share 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." Link to comment Share on other sites More sharing options...
Skysnake Posted May 28, 2020 Share 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? Link to comment Share on other sites More sharing options...
diff Posted May 28, 2020 Author Share 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) Link to comment Share on other sites More sharing options...
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