Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сравнение массивов (https://javascript.ru/forum/misc/71795-sravnenie-massivov.html)

shoopik 13.12.2017 18:52

Цитата:

Сообщение от Dilettante_Pro (Сообщение 472843)
shoopik,

Вы можете по условию if(item[key]!=old_item[key])
делать не только присвоение, а и запустить функцию изменения координат

но в итоге же создаётся новый объект old_item, и он возвращается, за счет чего идет перерисовка а не присвоение ? не пойму :)

Nexus 13.12.2017 20:03

Цитата:

Сообщение от shoopik
Получается здесь всё равно идёт присвоение, ну т.е. на место старого массива, встаёт копия. Старый же заменяется ?

Старый не заменяется, а изменяется.

shoopik 13.12.2017 20:12

Цитата:

Сообщение от Nexus (Сообщение 472854)
Старый не заменяется, а изменяется.

Где мне можно прочитать объяснение этому ? :)

Nexus 13.12.2017 20:16

shoopik, даже не знаю.
Достаточно просто разобраться, что скрипт делает.
Из массива new_data создается новый массив data, который содержит как новые элементы из массива new_data, так и измененные элементы массива data, если в массивах data и new_data были элементы с одинаковыми id.

shoopik 13.12.2017 20:22

Цитата:

Сообщение от Nexus
создается новый массив data

ага, так всё-таки создаётся ?))

Nexus 14.12.2017 09:27

shoopik, массив фактически другой, но элементы - измененные старые, к которым добавились новые.
Так что можно сказать, что это старый массив, который подвергся изменению.
Какой-то разницы быть не может, если данные хранятся в обычном массиве.

Dilettante_Pro 14.12.2017 10:56

shoopik,
Вы лучше конкретизируйте, какой результат вам нужен в итоге - что, где и по какой причине должно меняться.
Каким образом, на основании чего идет перерисовка?

Alexandroppolus 14.12.2017 11:12

Судя по посту №9 в этом топике, автору нужен "виртуальный ДОМ" или типа того.

shoopik 14.12.2017 17:19

Цитата:

Сообщение от Dilettante_Pro (Сообщение 472891)
shoopik,
Вы лучше конкретизируйте, какой результат вам нужен в итоге - что, где и по какой причине должно меняться.
Каким образом, на основании чего идет перерисовка?

ну т.е. есть объекты в старом массиве типа {id: user1, lat: 55.66}, и если с сервера приходит массив с таким же айди, то в локальном массиве, именно в этом объекте должен поменяться только lat, т.е. не переприсвоение, а именно в том старом объекте, ну и соответственно если с сервера приходит объект с айди которого нет в локальном, он пушиться в локальный, а если в локальном есть лишний объект, он удаляется :)
Зачем это всё ? Т.е. при отрисовке, если подменять массив, то если выбран(выделен, захвачен) какой-то отрисованный объект, он пропадает из выделения, нужно менять именно в старом

Dilettante_Pro 14.12.2017 17:22

shoopik,
Еще раз:
Каким образом, на основании чего идет перерисовка?


Часовой пояс GMT +3, время: 12:19.