Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Söka efter siffra i array

Postades av 2003-07-21 23:57:53 - David Emilsson, i forum visual basic - allmänt, Tråden har 6 Kommentarer och lästs av 467 personer

Finns det någon enkel funktion som man kan använda mot en array för att ta reda på om en viss siffra finns där någonstans? Jag vill ha ett true/false svar.
ex.
arrayen kanske ser ut såhär:

Array1(1,2,3,4,5)

jag frågar: finns det en trea i Array1?
det svaras: True (1)

jag frågar: finns det en sjua i Array1?
det svaras: False (0)

hoppas att någon förstår vad jag menar...


Svara

Sv: Söka efter siffra i array

Postades av 2003-07-22 01:20:29 - Pelle Johansson

Function ArrayTest(Minarray() as array,varde as integer) as Boolean

tmpArray = split(MinArray,",")
max = ubound(tmpArray) -1

arraytest = false

for a = 0 to max
if tmpArray(a) = varde then
arraytest = true
exit for
end if
next

End Function


Svara

Sv: Söka efter siffra i array

Postades av 2003-07-22 08:20:02 - Andreas Hillqvist

<code>
Function Exists(Data As Variuant, Find as Variant) As Boolean
Dim Index As long
For Index = LBound(Data) To UBound(Data)
If Data(Index) = Find Then
Exists = True
Exit For
End If
Next
End Function
</code>

Exempel:
<code>
Dim Data As Variant
Data = Array1(1,2,3,4,5)
If Exists(Data, 3) Then
Debug.Print "3 existerar"
Else
Debug.Print "3 Finns i sjön"
End If

If Exists(Data, 9) Then
Debug.Print "9 existerar"
Else
Debug.Print "9 Finns i sjön"
End If

</code>



Svara

Sv: Söka efter siffra i array

Postades av 2003-07-22 10:19:38 - Anders Eidergard

Här är en variant där man slipper loopa igenom arrayen, praktiskt om du har många array-items eller måste utföra proceduren väldigt många gånger.

Om man nu vill leta efter något annat än siffror kan det vara bra att byta ut "," mot något annat, mer ovanligt, tecken i join-satsen.

<code>
Private Function Exists(Data As Variant, Find As Variant) As Boolean
If Data(LBound(Data)) = Find Or _
Data(UBound(Data)) = Find Then
Exists = True 'Första eller sista item innehöll rätt värde
Else
'Kolla resterande värden
Exists = InStr(1, Join(Data, ","), "," & Find & ",")
End If
End Function
</code>

/Egget


Svara

Sv: Söka efter siffra i array

Postades av 2003-07-22 12:42:06 - Andreas Hillqvist

Varför använda join när det finns en filter funktion?
<code>
Public Function Exists(Data As Variant, Find As Variant) As Boolean
Dim Result As Variant
Result = Filter(Data, Find, True, vbBinaryCompare)
Exists = UBound(Result) >= 0
End Function
</code>


Svara

Sv: Söka efter siffra i array

Postades av 2003-07-22 14:12:45 - Per Hultqvist

"Här är en variant där man slipper loopa igenom arrayen, praktiskt om du har många array-items eller måste utföra proceduren väldigt många gånger."

Tvivlar iofs på att det skulle vara snabbare att söka efter en delsträng i en sträng än att loopa igenom en array...

Om ursprungsdatan är sorterad (och arrayen är någorlunda stor) så finns det snabbare metoden än att söka från början till slut. T ex (pseudokod) :
<code>
oldl=-1
low=lbound
high=ubound
l=(low+high)/2
Do
if (varde=array(l))
värde hittat, exit loop
elseif (värde<array(l))
high=l-1
elseif (värde>array(l))
low=l+1
end if
l=(low+high)/2
While low<>high
</code>
Algoritmen kollar hela tiden värdet mitt emellan low och high och flyttar dessa gränser beroende på om värdet är större eller mindre än det man söker och så testar man igen mittenvärdet...o s v...


Svara

Sv: Söka efter siffra i array

Postades av 2003-07-22 15:10:10 - Anders Eidergard

Filter-funktionen var ju rätt snitsig.

Har inte gjort nån benchmarking på skillnaden mellan att loopa igenom en array eller att söka i en sträng, men jag kan göra lite tester och återkomma.

[EDIT]: Har gjort lite tester och kommit fram till följande inbördes rangordning:
1. Filter
2. Join
3. Loop

Detta visar sig tydligare när det börjar bli väldigt många items i en array, framförallt drar Filter-funktionen ifrån när det börjar gå upp mot 1.000.000 items i en array.
Join är något snabbare än att Loopa, men det är inte mycket. Det beror dessutom på om man bara loopar rakt upp och ner eller använder nån lite smartare algoritm.

/Egget


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 166
27 952
271 704
818
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies