Возможно, в вопросе недостаточно подробностей, но предполагается следующее:
- Ajax возвращает текст, у которого список разделенных запятыми значений уникален идентификаторы маркера.
- У вас есть список или массив из предыдущего вызова ajax с уникальным идентификатором маркера.
- Требуется удалить список маркеров и добавить еще один список маркеров.
Если это не так, то уточните вопрос, добавив детали. «До» и «После» было бы хорошо.
В противном случае такой подход должен работать:
Пример данных:
var oldMarkers = [ "Joe's Diner",
"Frank's Bail bonds",
"Precinct 9",
"Fence and Go"
];
var newMarkerStr = "Precinct 9, Memorial Hospital,"
+ " Frank's Bail bonds, Mary's shyster";
//-- Split on commas; strip out boundary whitespace.
var newMarkers = newMarkerStr.split (/(?:\s*,\s*)+(?!(?:\s*,\s*))/);
Процесс выглядит так:
var toAdd = newMarkers.slice (); //-- Copy the array.
var toDelete = $.grep (oldMarkers, function (marker) {
var K = $.inArray (marker, newMarkers);
if (K == -1) {
//-- Old item not in the list, delete it.
return true;
}
else {
/*-- Old item is in the new list, mark it as
to be removed from the "add" list.
*/
toAdd[K] = -666;
}
return false;
} );
toAdd = $.map (toAdd, function (marker) {
return (marker == -666) ? null : marker;
} );
Посмотри вживую на jsFiddle.