Группировать массив в классическом ASP? - PullRequest
2 голосов
/ 26 января 2010

У меня есть массив в ASP, который выглядит следующим образом:

3,5,7,7,3,2,3

То, что я хочу сделать, это сгруппировать их по количеству, чтобы у меня было:

Number  Count
2       1
3       3
5       1
7       2

Возможно ли это? Если так, то как?

Ответы [ 3 ]

7 голосов
/ 26 января 2010

В asp-classic нет ассоциативных массивов ..

Альтернативой является Scripting.Dictionary

так

<%
    dim ar
    ar = array(3,5,7,7,3,2,3)

    dim dictArray

    set dictArray = server.CreateObject("Scripting.Dictionary")

    for each i in ar
        if dictArray.exists( i ) then
            dictArray(i) = dictArray(i) + 1
        else
            dictArray(i) = 1
        end if
    next
%>

это создало то, что вы хотите ... чтобы увидеть это сейчас

<%
    for each i in dictArray
        response.write( i & " : " & dictArray(i) & "<br />")
    next
 %>
0 голосов
/ 26 января 2010

Вам необходимо использовать двумерный массив в VBScript; http://www.4guysfromrolla.com/webtech/041101-1.2.shtml, что будет представлением Dictionary<int, int>, предложенным @Eibx.

0 голосов
/ 26 января 2010

Это пример в C #

public Dictionary<int, int> SortList(string text)
{
    Dictionary<int, int> sortedArray = new Dictionary<int, int>();
    List<int> array = new List<int>() { 1, 2, 2, 2, 5, 4 };

    for (int i = 0; i < array.Count; i++)
    {
        if (DoesExsist(sortedArray, array[i]))
        {
            sortedArray[array[i]]++;
        }
        else
        {
            sortedArray.Add(array[i], 1);
        }
    }

    return sortedArray;
}

private bool DoesExsist(Dictionary<int, int> array, int keyvalue)
{
    foreach (KeyValuePair<int, int> item in array)
    {
        if (item.Key == keyvalue)
        {
            return true;
        }
    }

    return false;
}

Не проверял это. Но должно сработать или хотя бы дать вам идею.

...