Без переформирования, чистое переприсвоение значений при различии.
Различие в первой и последней строках массивов. С удалением отсутствующих в новом массиве. С добавлением новых в старый массив. 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)); |
Цитата:
Спасибо, почти то что нужно )) Только, если в new_data есть элементы, которых нету в data, они тоже должны пушиться |
shoopik,
Цитата:
Исправил вычеркивание из старого массива и дописал добавление нового в примере пост№21 |
Часовой пояс GMT +3, время: 12:02. |