Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Удаление одинаковых значений с массива. / 7 сообщений из 7, страница 1 из 1
03.10.2013, 11:18
    #38415206
RTFM_VLAD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление одинаковых значений с массива.
Доброго времени суток!
Вопрос следующего типа:
Есть массив данных, в нем выражения типа String, необходимо удалить одинаковые значения, и вернуть полученное в новый массив, или в этот же. Не могу понять как делать, буду благодарен =)
...
Рейтинг: 0 / 0
03.10.2013, 12:32
    #38415341
VSVLAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление одинаковых значений с массива.
RTFM_VLAD,

Можно, например, в цикле пройтись по элементам массива и добавлять в словарь/коллекцию элемент, получим уникальную последовательность элементов, которые легко перегнать в новый массив. Можно отсортировать массив, а потом смотреть в цикле текущий = предыдущему и далее действовать. Есть функция Filter может довольно быстро удалить элементы из массива, заранее например задвоенные элементы промаркировать каким нибудь текстом.... Все зависит от размера массива, можно сделать просто а можно быстро. Задачу опишите подробнее
...
Рейтинг: 0 / 0
03.10.2013, 12:39
    #38415349
RTFM_VLAD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление одинаковых значений с массива.
VSVLAD,
Массив, каждый раз с разной размерностью, в нем лежат названия регионов России, они повторяются, в какой последовательности они получены, в такой же их надо вернуть в Word, но без одинаковых записей.
К примеру :
Array (0,1,2,3,4,5) 0=a 1=a 2=b 3=c 4=d 5=a
Надо:
Array (0,2,3) 0=a 1=b 2=c
...
Рейтинг: 0 / 0
03.10.2013, 12:59
    #38415390
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление одинаковых значений с массива.
используйте коллекцию или Scripting.Dictionary
...
Рейтинг: 0 / 0
03.10.2013, 13:21
    #38415425
Уёб0к
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление одинаковых значений с массива.
RTFM_VLAD,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Dim DistrCol   As New Collection
On Error Resume Next 'пропустим ошибку если элемент уже присутствует в коллекции

        If tmpStr <> "" Then
            DistrCol.Add tmpStr, tmpStr
        End If
Resume next


как то так
...
Рейтинг: 0 / 0
03.10.2013, 17:49
    #38415957
RTFM_VLAD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление одинаковых значений с массива.
Уёб0кRTFM_VLAD,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Dim DistrCol   As New Collection
On Error Resume Next 'пропустим ошибку если элемент уже присутствует в коллекции

        If tmpStr <> "" Then
            DistrCol.Add tmpStr, tmpStr
        End If
Resume next


как то так

Да вот что то "Dim DistrCol As New Collection" не пашет, да и ваще коллекции не разу не юзал, по этому не допер, с циклами мучался, вот что люди посоветовали и заработало:
With CreateObject("Scripting.Dictionary")
For n_d = 0 To UBound(regs_sp)
.Item(regs_sp(n_d)) = 0&
Next
regs_sp = .keys

но я и ваше попробую щас как выйдет.
...
Рейтинг: 0 / 0
05.10.2013, 04:52
    #38417557
i45
i45
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление одинаковых значений с массива.
RTFM_VLADДоброго времени суток!
Вопрос следующего типа:
Есть массив данных, в нем выражения типа String, необходимо удалить одинаковые значения, и вернуть полученное в новый массив, или в этот же. Не могу понять как делать, буду благодарен =)

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
Dim massiv(3) As String
Dim oDic As New Scripting.Dictionary
Dim varKey As Variant
Dim i As Integer

massiv(0) = "qqq"
massiv(1) = "qqq"
massiv(2) = "qqqq"
 
Set oDic = RemoveDupesFromArray(massiv)

ReDim massiv2(oDic.Count)

For Each varKey In oDic.Keys
    massiv2(i) = varKey
    i = i + 1
Next varKey


Private Function RemoveDupesFromArray(ByVal varMassiv As Variant) As Scripting.Dictionary
    Dim oDic As New Scripting.Dictionary
    Dim i As Integer

    
    For i = LBound(varMassiv) To UBound(varMassiv) - 1
        If Not oDic.Exists(varMassiv(i)) Then
             oDic.Add varMassiv(i), varMassiv(i)
        End If
    Next i
        
    Set RemoveDupesFromArray = oDic
End Function



Предварительно установите референс на Microsoft Scripting Runtime.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Удаление одинаковых значений с массива. / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]