Skriptovací slovníku naplněn daty řetězec řazení

Prohlášení o odmítnutí odpovědnosti pro už nepodporovaný obsah KB

Tento článek byl napsán pro produkty, ke kterým již Microsoft nadále nenabízí podporu. Článek je tedy poskytován „tak, jak je“ a nebude už nadále aktualizován.

Souhrn

Objekt skriptování slovník je ekvivalentní PERL asociativní pole, kde jsou informace uloženy v matici obsahující jedinečné klíče a data položky. Vzhledem k tomu, že tato informace je uložená neseřazené, výčet prostřednictvím pole vrátí informace v pořadí, ve kterém byl uložen. Účelem tohoto článku je definovat funkci SortDictionary() seřadí obsah objektu dictionary, který je naplněn daty řetězec klíč nebo položku.

Další informace

Následující příklad kódu definuje dvě konstanty, dictKey a dictItem, které jsou používány funkce SortDictionary() . Funkce SortDictionary() trvá dva parametry objektu dříve vytvořené jako skriptovací slovníku a jeden konstanty určit, zda chcete seřadit podle klíče do slovníku nebo položky.

Const dictKey  = 1Const dictItem = 2

Function SortDictionary(objDict,intSort)
' declare our variables
Dim strDict()
Dim objKey
Dim strKey,strItem
Dim X,Y,Z

' get the dictionary count
Z = objDict.Count

' we need more than one item to warrant sorting
If Z > 1 Then
' create an array to store dictionary information
ReDim strDict(Z,2)
X = 0
' populate the string array
For Each objKey In objDict
strDict(X,dictKey) = CStr(objKey)
strDict(X,dictItem) = CStr(objDict(objKey))
X = X + 1
Next

' perform a a shell sort of the string array
For X = 0 to (Z - 2)
For Y = X to (Z - 1)
If StrComp(strDict(X,intSort),strDict(Y,intSort),vbTextCompare) > 0 Then
strKey = strDict(X,dictKey)
strItem = strDict(X,dictItem)
strDict(X,dictKey) = strDict(Y,dictKey)
strDict(X,dictItem) = strDict(Y,dictItem)
strDict(Y,dictKey) = strKey
strDict(Y,dictItem) = strItem
End If
Next
Next

' erase the contents of the dictionary object
objDict.RemoveAll

' repopulate the dictionary with the sorted information
For X = 0 to (Z - 1)
objDict.Add strDict(X,dictKey), strDict(X,dictItem)
Next

End If

End Function

A příklad práce

Následující příklad využívá funkci výše.

Poznámka: Všechny komentáře byly odebrány ze skutečné funkce třídění v tomto příkladu.


Zkopírujte následující kód ASP a uložit ji do složky jako Sortdemo.asp s alespoň skripty přístup:
<%@LANGUAGE="VBSCRIPT"%><% Option Explicit %>
<html>
<head><title>Dictionary Sorting</title></head>
<body>
<%

Dim d, i

Const dictKey = 1
Const dictItem = 2

Set d = Server.CreateObject("Scripting.Dictionary")

d.Add "3", "Delta"
d.Add "1", "Foxtrot"
d.Add "4", "Bravo"
d.Add "2", "Echo"
d.Add "6", "Alpha"
d.Add "5", "Charlie"

Response.Write "<p>Before Sorting:<br>"
For Each i In d
Response.Write i & "=" & d(i) & "<br>"
Next

Response.Write "<p>By Key:<br>"
SortDictionary d,dictKey
For Each i In d
Response.Write i & "=" & d(i) & "<br>"
Next

Response.Write "<p>By Item:<br>"
SortDictionary d,dictItem
For Each i In d
Response.Write d(i) & "=" & i & "<br>"
Next
%>
</body>
</html>
<%
Function SortDictionary(objDict,intSort)
Dim strDict()
Dim objKey
Dim strKey,strItem
Dim X,Y,Z
Z = objDict.Count
If Z > 1 Then
ReDim strDict(Z,2)
X = 0
For Each objKey In objDict
strDict(X,dictKey) = CStr(objKey)
strDict(X,dictItem) = CStr(objDict(objKey))
X = X + 1
Next
For X = 0 to (Z - 2)
For Y = X to (Z - 1)
If StrComp(strDict(X,intSort),strDict(Y,intSort),vbTextCompare) > 0 Then
strKey = strDict(X,dictKey)
strItem = strDict(X,dictItem)
strDict(X,dictKey) = strDict(Y,dictKey)
strDict(X,dictItem) = strDict(Y,dictItem)
strDict(Y,dictKey) = strKey
strDict(Y,dictItem) = strItem
End If
Next
Next
objDict.RemoveAll
For X = 0 to (Z - 1)
objDict.Add strDict(X,dictKey), strDict(X,dictItem)
Next
End If
End Function
%>

Při procházení, by měl zobrazit následující výstup:
Before Sorting:3=Delta
1=Foxtrot
4=Bravo
2=Echo
6=Alpha
5=Charlie

By Key:
1=Foxtrot
2=Echo
3=Delta
4=Bravo
5=Charlie
6=Alpha

By Item:
Alpha=6
Bravo=4
Charlie=5
Delta=3
Echo=2
Foxtrot=1


Společnost Microsoft poskytuje ukázky programování pouze pro ilustraci bez žádné záruky výslovně uvedené nebo odvozené. To zahrnuje, ale není omezen pouze na předpokládané záruky obchodovatelnosti nebo vhodnosti pro určitý účel. Tento článek předpokládá, že jste obeznámeni s programovacím jazykem, který je předmětem ukázky a s nástroji, které slouží k vytvoření a ladění skriptu. Pracovníci podpory společnosti Microsoft mohou pomoci vysvětlit funkce určitého postupu, nemohou však následující příklady rozšířit o další funkce nebo vytvářet postupy podle vašich konkrétních požadavků.

Další informace o možnostech podpory, které jsou k dispozici a o možnostech kontaktování společnosti Microsoft naleznete na následujícím webu společnosti Microsoft:

Odkazy

Další informace o skriptovací technologie společnosti Microsoft naleznete na webu Microsoft Developer Network na následující adrese URL:
Vlastnosti

ID článku: 246067 - Poslední kontrola: 8. 1. 2017 - Revize: 1

Váš názor