1.已从旧列表中删除的项目 2.添加到新列表中的项目(原始列表中不存在)。
我编写了两个循环来实现这一点,它们产生了以下输出:
oldItems = "an, old, list" ---> Items To Delete: 'an,old' newItems = "a, new, list" ---> Items To Create: '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);
}