30. juli 2007 - 12:59Der er
9 kommentarer og 2 løsninger
tjekke for dubletter i et array
Hej, Jeg vil lige høre om der er nogen som ligger inde med en function som tjekker for dubletter i et array. Jeg har et array med mellem 500 og 1000 værdier. Det hele er tal(int) værdier.
Støv, fibre og metalliske partikler kan påvirke både uptime, levetid og driftssikkerhed. Derfor arbejder flere datacentre systematisk med contamination control.
Denne kode skulle vist kunne bruges til at finde dem med i hvert tilfælde: -------------------------------- For i=LBound(arrNavn) To UBound(arrNavn) For j=LBound(arrNavn) To UBound(arrNavn) If j<>i And arrNavn(j)=arrNavn(i) Then 'tallet findes Response.Write "<p>"&j&": "&arrNavn(j)&"</p>"&vbCrLf End If Next Next -------------------------------
Eller kortere: ------------------------ For i=LBound(arrNavn) To UBound(arrNavn) For j=LBound(arrNavn) To UBound(arrNavn) If j<>i And arrNavn(j)=arrNavn(i) Then Response.Write "<p>"&j&": "&arrNavn(j)&"</p>" Next Next
Set d = CreateObject("Scripting.Dictionary") d.removeall d.CompareMode = 0 For Each item In anArray If Not d.Exists(item) Then d.Add item, item Next thekeys = d.keys Set d = Nothing RemDups = thekeys End Function ------------------------------------ Glem de andre koder og kald denne funktion med: RemoveDuplicates(arrNavn)
for i = 0 to ubound(ArrAnnonId) Response.Write ArrAnnonId(i) & ", " next
Response.Write "<hr>"
ArrAnnonId2 = RemoveDuplicates(ArrAnnonId)
for a = 0 to ubound(ArrAnnonId2) Response.Write ArrAnnonId2(a) & ", " next
Function RemoveDuplicates(ByVal anArray) Dim d, item, thekeys
Set d = CreateObject("Scripting.Dictionary") d.removeall d.CompareMode = 0 For Each item In anArray If Not d.Exists(item) Then d.Add item, item Next thekeys = d.keys Set d = Nothing RemDups = thekeys End Function %>
Og jeg får fejlen: Microsoft VBScript runtime error '800a000d'
function RemoveDuplicates(a) if IsArray(a) = false then a = split(a, ",") dim i, r for i = lbound(a) to ubound(a) - 1 if instr(r, a(i) & ",") = 0 then r = r & a(i) & "," next RemoveDuplicates = left(r, len(r) - 1) end function
' Funktionen kan bruges sådan her:
' 1) Du kan sende en STRENG til funktionen Response.Write "Resultatet af en streng: " Response.Write RemoveDuplicates("1,8,6,5,4,8,6,5,3,1,1,1,1,7,4,5,6,3,0,4,5,4,8,4,8") & "<br>"
' 2) Du kan sende en ARRAY til funktionen: Response.Write "Resultatet af en array: " Response.Write RemoveDuplicates( split("1,8,6,5,4,8,6,5,3,1,1,1,1,7,4,5,6,3,0,4,5,4,8,4,8",",") ) & "<br>"
Jeg smider lige et svar.. det kunne jo være at du kunne bruge funktionen, når den nu tager imod både strenge og arrays.. :-)
Jeg har testet med følgende værdier/kombinationer, som jeg kunne komme i tanke om.
- tomt streng - streng der ender med "," - streng der ikke ender med "," - array, via split af streng - null
Alle de ovennævnte muligheder virker som de skal.
Kan du/I komme i tanke om andre kombinationer?
<%
function RemoveDuplicates(ByVal a) if IsArray(a) = false then a = split(a & ",", ",") dim i, r for i = lbound(a) to ubound(a) - 1 if instr(r, a(i) & ",") = 0 then r = "" & r & a(i) & "," next RemoveDuplicates = left(r, len(r) - 1) end function
' Funktionen kan bruges sådan her:
' 1) Du kan sende en STRENG til funktionen Response.Write "Resultatet af en streng: " Response.Write RemoveDuplicates( "1,8,6,5,4,8,6,5,3,1,1,1,1,7,4,5,6,3,0,4,5,4,8,4,8" ) & "<br>"
' 2) Du kan sende en ARRAY til funktionen: Response.Write "Resultatet af en array: " Response.Write RemoveDuplicates( split("1,8,6,5,4,8,6,5,3,1,1,1,1,7,4,5,6,3,0,4,5,4,8,4,8", ",") ) & "<br>"
%>
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.