Ладно, для меня это довольно тяжело обернуть голову, так что я надеюсь, что один из вас, ребята, сможет помочь.Немного контекста, это для написанного мной средства обновления, которое берет список файлов xml из cdn, а затем сравнивает его со старым списком, чтобы найти различия в файлах, так что я знаю, какие файлы устарели и должны быть перезагружены.Сейчас я не могу найти правильное решение для этого.
В настоящее время у меня есть 3 массива.Array1, Array2 и DiffArray.Array1 хранит записи в формате xml из CDN. На главном устройстве Array2 хранит старые записи того, что у нас есть в настоящее время. На ведомом устройстве Array3 хранятся различия того, что изменилось между 2.
Вот примерный битинформации, которая находится в каждом массиве.Обратите внимание, что каждая новая строка разбирается в отдельный индекс соответствующего массива
Array1:
cbt/ar/816.mp3
2019-06-05T16:40:33.212Z
cbt/ar/817.mp3
2019-06-05T16:40:31.509Z
cbt/ar/818.mp3
2019-04-05T16:40:30.978Z
cbt/ar/819.mp3
2019-04-05T16:40:29.807Z
Array2:
cbt/ar/816.mp3
2019-04-05T16:40:33.212Z
cbt/ar/817.mp3
2019-04-05T16:40:31.509Z
cbt/ar/818.mp3
2019-04-05T16:40:30.978Z
cbt/ar/819.mp3
2019-04-05T16:40:29.807Z
пару вещей на заметку: 1.) это список имени файла и даты его последнего изменения 2.) Как видите, массив1 имеет новый файл для 816.mp3 и 817.mp3
Идея состоит в том, чтобы увидеть, чтоОбратите внимание, что файлы отличаются, а затем повторно загрузите эти файлы с более свежей версией.
Это то, что у меня есть в настоящее время, но, как вы можете видеть, это не правильное решение для работы:
var a = [];
for (var x = 0; x < remoteArray.length; x++) {
a[remoteArray[x]] = true;
}
for (var y = 0; y < localArray.length; y++) {
if (a[localArray[y]]) {
delete a[localArray[y]];
} else {
a[localArray[y]] = true;
}
}
for (var z in a) {
diffArray.push(z);
log.info("::DIFFERENCES::" + z);
}
}
Этот текущий код выводит только реальные буквальные различия и не помогает мне узнать, какой файл отличается, так что я могу его обновить