|
Как сверить две структуры? | ☑ | ||
---|---|---|---|---|
0
Adept
24.01.19
✎
10:10
|
Есть две структуры внутри которых поля со структурами либо массивами структур либо простыми типами
Как сверить? Пока идея в том что бы серилизовать в JSON и хеш посчитать? Какие еще идеи? |
|||
1
Adept
24.01.19
✎
10:12
|
+(0) из минусов, порядок структур в массиве будет влиять на сравнение
|
|||
2
Вафель
24.01.19
✎
10:17
|
по каждому значению сравнивай
|
|||
3
Beduin
24.01.19
✎
10:20
|
(2) Угу. И еще написать условие сравнения для каждого объекта
|
|||
4
Adept
24.01.19
✎
10:21
|
А как сравнить массивы? Массивы (1,2) и (2,1) это одинаковые массивы
|
|||
5
Beduin
24.01.19
✎
10:21
|
(0) Я бы хранилищезначения использовал. Из него можно двоичные данные получить и потом по нему хеш функцию
|
|||
6
Вафель
24.01.19
✎
10:21
|
(4) отсортировать вначале
|
|||
7
Вафель
24.01.19
✎
10:22
|
напистаь deepEqual - это задача на джуниора
|
|||
8
Adept
24.01.19
✎
10:23
|
Я думаю надо сделать таблицу вида ключ-значение
в столбец ключ писать ключродителя.ключдочерний , в значении соответственно значение, потом сортировка, потом сериализация потом хеш (6) а если там структуры, да с массивами |
|||
9
Adept
24.01.19
✎
10:25
|
(7) Куда мне до джуна ...
|
|||
10
Вафель
24.01.19
✎
10:25
|
(8) ты массивы без сортировки никак не сравнишь
|
|||
11
Serg_1960
24.01.19
✎
10:25
|
Чисто формально, строго говоря, если порядок внутри структур не совпадает, то структуры - различны.
Иначе придёт приводить структуры к единому порядку - а это сама по себе не тривиальная задача если требуется реализовать универсальный алгоритм сравнения. Если проблема универсального решения не стоит и зная метаданные структуры, - то структуры можно отсортировать перед получением хэша для сравнения. |
|||
12
Beduin
24.01.19
✎
10:25
|
(10) Это все равно не оптимальный геморрой.
|
|||
13
Serg_1960
24.01.19
✎
10:28
|
(на смех пробило) Геморрой оптимальным не бывает :)
|
|||
14
Adept
24.01.19
✎
10:28
|
(10) понятия сортировки для массива со структурами нет
|
|||
15
Adept
24.01.19
✎
10:30
|
(13) геморройный градиент
|
|||
16
Вафель
24.01.19
✎
10:30
|
(11) внутри структур нет порядка
|
|||
17
Вафель
24.01.19
✎
10:32
|
(14) будет интересно посмотреть на твой алгоритм сравнения массивов
|
|||
18
Adept
24.01.19
✎
10:33
|
(17) Ну я в (8) предложил, экстрактировать структуры в ТЗ, отсортировать, захешить
|
|||
19
RomanYS
24.01.19
✎
10:33
|
Бредовая идея: ЗначениеВСтрокуВнутр
|
|||
20
Adept
24.01.19
✎
10:34
|
(19) при разном порядке будет разный результат
|
|||
21
Вафель
24.01.19
✎
10:34
|
(18) те массив отсортировать нельзя, а тз можно?
|
|||
22
IvanGorbunov
24.01.19
✎
10:34
|
Структура1 = Структура2 ??))
|
|||
23
Ns33
24.01.19
✎
10:34
|
(19) Тоже хотел предложить, а список строк уже вполне сортируется.
|
|||
24
Ns33
24.01.19
✎
10:36
|
(20) ЗначениеВСтрокуВнутр к каждому элементу структуры.
|
|||
25
1CIlya
24.01.19
✎
10:36
|
Массив структур можно отсортировать по общему полю из этих структур, а поле можно рассчитать с помощью
Структура.Ключ = ЗначениеВСтрокуВнутр(Структура). |
|||
26
Конструктор1С
24.01.19
✎
10:38
|
Это где такое понадобилось? В обмене через EnterpriseData?
|
|||
27
Adept
24.01.19
✎
10:43
|
(26) обмен с сайтом, через json. надо сравнивать то что пришло сейчас и с прошлым обменом на предмет измененности
|
|||
28
Мыш
24.01.19
✎
10:45
|
Для структуры написать аналог полного соединения по ключам. Для массивов то же самое по значениям. Всё в рекурсию. )
|
|||
29
1CIlya
24.01.19
✎
10:46
|
(28) Рекурсия может вызвать переполнение стека, просто массив.
|
|||
30
Вафель
24.01.19
✎
10:49
|
(28) полное соединение не нужно, если количество ключей разное - то не равны, иначе достаточно обхода одной структуры
|
|||
31
Lama12
24.01.19
✎
10:54
|
(27) А может передавать только то что изменилось? Проверку измененности производить на стороне передающего. Зачем сравнивать две структуры? Потратишь не на много меньше времени чем при полной загрузке. Можно же сравнивать то что есть в базе с тем что пришло, и если есть изменения то записывать. Но лучше выгружать только измененное, относительно предыдущей выгрузки.
|
|||
32
Мыш
24.01.19
✎
11:04
|
(30) Это задел, чтоб узнать, что именно отличается
|
|||
33
Beduin
24.01.19
✎
11:05
|
(31) При каждой записи объекта будет эта проверка. Фоном должно, что-то идти.
|
|||
34
youalex
24.01.19
✎
11:34
|
(22) так ты ссылки сравнишь, а нужно значения
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |