PeeerMedlem sedan mars 20025 907 inlägg Hilfe!
Jag har två arrayer (arrTextID & arrNewsID) som båda innehåller 3 rader med IDnr och tidpunkt. Det jag vill göra är att jämföra tidpunkterna i de båda arrayerna och plocka ut de 3 senaste IDnr (ordnat efter tidpunkt). Jag vill dessutom se till så att samma IDnr INTE förekommer flera gånger.
arrTextID:
(0,0) = 25
(1,0) = 2003-01-12 14:15:12
(0,1) = 17
(1,1) = 2003-01-07 15:16:17
(0,2) = 18
(1,2) = 2002-05-07 01:12:24
arrNewsID
(0,0) = 14
(1,0) = 2003-02-28 15:16:19
(0,1) = 14
(1,1) = 2003-02-05 14:16:47
(0,2) = 15
(1,2) = 2003-01-06 17:15:13
Resultatet ska då bli:
14, 25, 17 (observera att 14 bara förekommer en gång)
Hoppas att något förstår vad jag vill göra och vet hur man gör.
nikoMedlem sedan juni 20022 599 inlägg Arrayer har inga inbyggda sorteringsfunktioner, det har däremot ADO:n.
Så om man vill få en gratis datumsortering så kan man ju slänga över arrayerna i ett temporärt Recordset:
Function GetLastThreeIds(inpArray1(),inpArray2())
Set tmpRec = Server.CreateObject("ADODB.Recordset")
tmpRec.Fields.Append "Id", 3 'adInteger
tmpRec.Fields.Append "TimeStamp", 135 'adDBTimeStamp
tmpRec.Open
For i = LBound(inpArray1, 2) To UBound(inpArray1, 2)
tmpRec.AddNew
tmpRec("Id") = CInt(inpArray1(0, i))
tmpRec("TimeStamp") = CDate(inpArray1(1, i))
Next
For i = LBound(inpArray2, 2) To UBound(inpArray2, 2)
tmpRec.AddNew
tmpRec("Id") = CInt(inpArray2(0, i))
tmpRec("TimeStamp") = CDate(inpArray2(1, i))
Next
tmpRec.Sort = "TimeStamp DESC" 'Sortera på tid.
tmpRec.MoveFirst
Dim arrToReturn(2)
arrToReturn(0) = tmpRec("Id")
Do While arrToReturn(0) = tmpRec("Id") And Not tmpRec.EOF
tmpRec.MoveNext 'Ignorera dubbletter
Loop
If Not tmpRec.EOF Then arrToReturn(1) = tmpRec("Id")
Do While (arrToReturn(1) = tmpRec("Id") or arrToReturn(0) = tmpRec("Id")) And Not tmpRec.EOF
tmpRec.MoveNext 'Ignorera dubbletter
Loop
If Not tmpRec.EOF Then arrToReturn(2) = tmpRec("Id")
Set tmpRec = Nothing
GetLastThreeIds = arrToReturn
end Function
sortedArray= GetLastThreeIds(arrTextID,arrNewsID)
response.write "Resultat: " & sortedArray(0) & " " & sortedArray(1) & " " & sortedArray(2)
Kanske lite "overkill" i det här fallet men sorteringen funkar ju på godtyckligt stora arrayer.
PeeerMedlem sedan mars 20025 907 inlägg Tack! Den verkar funka fint!