webForumDet fria alternativet

Hitta dubletter i en array - hur?

ASP

13 svar · 824 visningar · startad av arro

Medlem sedan okt. 200154 inlägg
Frågan#1

Jag skapar och lägger till poster i en array med denna loop.

Do Until RecSet.Eof

dbSok = RecSet(dbField)

If inStr(dbSok,frmSok) Then
cntMatch = cInt(cntMatch) + 1
ReDim aMatch(cInt(cntMatch))
aMatch(cInt(cntMatch)) = RecSet("kontaktID")

End If
RecSet.MoveNext
Loop

Sedan vill jag kolla om alla posterna i arrayen har fått samma värde för att kunna skriva ut endast unika poster. Hur gör man?

Medlem sedan dec. 200012 464 inlägg
#2

Ställ villkoren direkt i sql-satsen istället

query="select distinct kontaktid from t where dbfield like '%" & frmSok & "%'"
set rs = conn.execute(query)
if not rs.eof then
' gör något positivt
end if
Medlem sedan okt. 200154 inlägg
#3

Jo, men så ville jag inte göra eftersom jag använder recordsetet till andra grejer oxå, där jag inte vill använda DISTINCT.

Medlem sedan mars 2001309 inlägg
#4

Gör en nästlad loop och gemmför värdena !

Medlem sedan okt. 200154 inlägg
#5

Förlåt, jag är trög... men hur?

Medlem sedan dec. 200012 464 inlägg
#6

Jaha,


function checkDuplicate(m,i)
dim j
for j = 0 to i - 1
    if  m(j) = m(i) then
        checkDuplicate = true
        exit function
    end if
next
checkDuplicate = false
end function

for i = 0 to ubound(aMatch)
    if not checkDuplicate(aMatch,i) then 
       response.write aMatch(i) & "<br>"
    end if
next
Medlem sedan okt. 200154 inlägg
#7

Tyvärr så funkar inte det där som jag vill. Säg att arrayen ser ut såhär: aMatch(1,1,1,2,2,3,4,4,5). Då vill jag skriva ut 1, 2, 3, 4 och 5 varsin gång, men inte 1 tre gånger, 2 två gånger osv.

Medlem sedan dec. 200012 464 inlägg
#8

Jaså, jag får ut varje värde bara en gång när jag testkör.

Medlem sedan okt. 200154 inlägg
#9

Ok, nu funkar det. Jag var seg som vanligt. Tack som fan!

Medlem sedan okt. 200558 inlägg
#10

Vore trevligt om du ville posta den slutgiltiga lösningen. Sitter med exakt samma problem nämligen, emn får inte riktigt ihop era 2 funktioner :P

Medlem sedan juni 200032 967 inlägg
#11

Jag tror nog att fem år är lite för lång tid för att någon ska ens minnas att man haft problemet...

Så, hur ser din kod ut?
Arrayinnehållet?

Medlem sedan okt. 200558 inlägg
#12

Oj sorry! Såg visst inte datumen :P

WordArray = Split(request.Form("chkName"), ", ")
for i = 0 to ubound(WordArray)
    response.Write(WordArray(i) & "<br>")
next

Så ser min kod ut. Hämtar värden från CheckBoxar, sparar dessa i en array. Nu vill jag kunna sortera ut dubbletter, utan att använda SQL DISTINCT.

Tack på förhand!

PS Array'en innehåller endast int DS

Medlem sedan juni 200032 967 inlägg
#13

Funkar det inte om du använder LarsGs kod sisomså:

function checkDuplicate(m,i)
dim j
for j = 0 to i - 1
    if  m(j) = m(i) then
        checkDuplicate = true
        exit function
    end if
next
checkDuplicate = false
end function

for i = 0 to ubound(WordArray)
    if not checkDuplicate(WordArray,i) then 
       response.write WordArray(i) & "<br>"
    end if
next

?

Medlem sedan okt. 200558 inlägg
#14

Ahaaa! Säger samma som arro här ovan. Seg som vanligt ;) Tusen tack för hjälpen!

266 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)