Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 14.12.2017, 18:06
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 1,881

Без переформирования, чистое переприсвоение значений при различии.
Различие в первой и последней строках массивов.
С удалением отсутствующих в новом массиве.
С добавлением новых в старый массив.
var data = [{id: "driver_socket_1", latitude: -11.37080786775757, longitude: -27.69586199177322, iconUrl: "assets/carIcon.png"},
{id: "driver_socket_2", latitude: -28.24136677583389, longitude: -10.25425740195638, iconUrl: "assets/carIcon.png"},
{id: "driver_socket_3", latitude: -40.95439940439371, longitude: -27.673982748204622, iconUrl: "assets/carIcon.png"},
{id: "driver_socket_4", latitude: -22.490445128116, longitude: 9.730743699541932, iconUrl: "assets/carIcon.png"},
{id: "driver_socket_5", latitude: -8.14232867010616, longitude: -5.386359633011523, iconUrl: "assets/carIcon.png"}],
    new_data = [{id: "driver_socket_1", latitude: -10.37080786775757, longitude: -28.69586199177322, iconUrl: "assets/carIcon.png"},
{id: "driver_socket_2", latitude: -28.24136677583389, longitude: -10.25425740195638, iconUrl: "assets/carIcon.png"},
{id: "driver_socket_4", latitude: -22.490445128116, longitude: 9.730743699541932, iconUrl: "assets/carIcon.png"},
{id: "driver_socket_5", latitude: -7.14232867010616, longitude: -5.386359633011523, iconUrl: "assets/carIcon.png"},
{id: "driver_socket_6", latitude: -6.14232867010616, longitude: -6.386359633011523, iconUrl: "assets/carIcon.png"}],
	indexed_data={};//id=>item
	
new_data.forEach(function(item){
	indexed_data[item.id]=item;
});
data.forEach(function(item, index){
	var new_item=indexed_data[item.id];
        if(new_item) {
          delete indexed_data[item.id];
        ['latitude','longitude'].forEach(function(key){
		if(item[key]!=new_item[key])
			item[key]=new_item[key];
        });
        } else {
            delete data[index];
        }
 });
for(var key in indexed_data) {
     data.push(indexed_data[key]);
};
alert(JSON.stringify(data));

Последний раз редактировалось Dilettante_Pro, 15.12.2017 в 11:10.
Ответить с цитированием
  #22 (permalink)  
Старый 14.12.2017, 20:08
Аспирант
Отправить личное сообщение для shoopik Посмотреть профиль Найти все сообщения от shoopik
 
Регистрация: 02.07.2017
Сообщений: 83

Сообщение от Dilettante_Pro Посмотреть сообщение
shoopik,
Еще раз:
Каким образом, на основании чего идет перерисовка?
Сокеты сыпят массивы, потом идет присвоение у меня, типа locaArray = serverArray. Отрисовка, просто берет все объекты в массиве и отрисовывает, один объект - это айдишник, и еще параметры, которые и меняются.

Спасибо, почти то что нужно )) Только, если в new_data есть элементы, которых нету в data, они тоже должны пушиться

Последний раз редактировалось shoopik, 14.12.2017 в 20:18.
Ответить с цитированием
  #23 (permalink)  
Старый 15.12.2017, 11:13
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 1,881

shoopik,
Сообщение от shoopik
Отрисовка, просто берет все объекты в массиве и отрисовывает, один объект - это айдишник, и еще параметры, которые и меняются
Не очень понятно, чем старый измененный массив лучше нового, ну да ладно.
Исправил вычеркивание из старого массива и дописал добавление нового в примере пост№21
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение значений массивов в мини-игре Cubbat Общие вопросы Javascript 2 18.10.2016 09:13
сравнение элементов массивов cajiamahdpa Общие вопросы Javascript 1 17.10.2016 12:29
Сравнение 2 массивов в each Vladislav306907 jQuery 1 23.06.2016 02:10
Сравнение элементов массивов nesfiraty Общие вопросы Javascript 20 13.01.2015 19:23
сравнение массивов bot87 Общие вопросы Javascript 4 22.09.2012 01:31