다음 함수는 이전에 항목의 새 목록을 비교하고 차이를 발견 : 이전 목록에서 새 목록에 추가 된 두 목록을 비교하고 둘 사이의 차이점을 찾는 방법은 무엇입니까?
- 항목 (에 존재하지 원래 목록).
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);
}
아론, 이건 정말 끝내 주는데. 고마워. 나는 그것이 일반적으로 나를 위해 매우 유용 할 것이라고 생각한다. 그러나 내 목적을 위해, 나는 하나의 루프를 사용하고 Ray가 언급 한 것처럼 ListFind() 함수를 사용할 것이라고 생각한다. 나는 당신의 UDF가 굉장하다고 생각하지만,이 상황에서는 약간의 과잉이다. 데모 주셔서 감사합니다! – Mohamad
걱정할 필요가 없습니다. 하지만, 귀하의 질문에 대답 했어 :) –
당신은 실제로 않았다 :) – Mohamad