Следующая функция сравнивает новый список элементов со старым и находит различия:
- Элементы, которые были удалены из старого списка
- Элементы, которые были добавлены вновый список (отсутствует в исходном списке).
Я написал два цикла для достижения этой цели, и они дали следующий вывод:
oldItems = "an,old, list "---> Элементы для удаления: 'an, old'
newItems =" a, new, list "---> Элементы для создания: 'new'
Первая проблема - a
должна отображаться в элементах для создания, но я считаю, что это подстрока an
, она не поднимается.
Вторая проблема (?) - я делаюдве петли кажутся неэффективными.Можно ли изменить код?
public function testList() hint="Compares two lists to find the differences."
{
local.oldItems = "a, new, list";
local.newItems = "an, old, list";
local.toDelete = "";
local.toCreate = "";
// Loop over newItems to find items that do not exist in oldItems
for (local.i = 1; local.i LTE ListLen(local.newItems, ", "); local.i++)
{
if (! ListContains(local.oldItems, ListGetAt(local.newItems, local.i, ", ")))
{
local.toCreate = ListAppend(local.toCreate, ListGetAt(local.newItems, local.i, ", "));
}
}
// Loop over old items to find items that do not exist in newItems
for (local.i = 1; local.i LTE ListLen(local.oldItems, ", "); local.i++)
{
if (! ListContains(local.newItems, ListGetAt(local.oldItems, local.i, ", ")))
{
local.toDelete = ListAppend(local.toDelete, ListGetAt(local.oldItems, local.i, ", "));
}
}
writeDump(var="Items To Delete: '" & local.toDelete & "'");
writeDump(var="Items To Create: '" & local.toCreate & "'", abort=true);
}