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

Можно, например, в цикле пройтись по элементам массива и добавлять в словарь/коллекцию элемент, получим уникальную последовательность элементов, которые легко перегнать в новый массив. Можно отсортировать массив, а потом смотреть в цикле текущий = предыдущему и далее действовать. Есть функция Filter может довольно быстро удалить элементы из массива, заранее например задвоенные элементы промаркировать каким нибудь текстом.... Все зависит от размера массива, можно сделать просто а можно быстро. Задачу опишите подробнее
...
Рейтинг: 0 / 0
Удаление одинаковых значений с массива.
    #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
Удаление одинаковых значений с массива.
    #38415390
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
используйте коллекцию или Scripting.Dictionary
...
Рейтинг: 0 / 0
Удаление одинаковых значений с массива.
    #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
Удаление одинаковых значений с массива.
    #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
Удаление одинаковых значений с массива.
    #38417557
Фотография 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
7 сообщений из 7, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Удаление одинаковых значений с массива.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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