def m = [
[id: 7144, name: "Test załącznika.docx", group: "3#Gotowe do akceptacji"],
[id: 7145, name: "Test załącznika 2.docx", group: "3#Gotowe do akceptacji"],
[id: 7146, name: "Test integracji dział prawny cd..docx", group: "3#Gotowe do akceptacji"],
[id: 7147, name: "Test załącznika 3.docx", group: "3#Gotowe do akceptacji"],
[id: 7153, name: "Z.8.DRWS.P.01.F.01.PL.01 Wykaz dokumentów związanych i załączników.docx", group: "3#Gotowe do akceptacji"]
]
def mj = [
[id: 24930, name: "Test integracji dział prawny cd. nowy.docx"],
[id: 24931, name: "Test załącznika nowy.docx"],
[id: 24932, name: "Test załącznika 3 nowa.docx"],
[id: 23432, name: "xoxoxoxx.docx"],
[id: 24933, name: "Test załącznika 2 nowy.docx"]
]
m.each { webcFile ->
def webcName = webcFile.name
def webcGroup = webcFile.group
def webcNameWithoutExtension = webcName.take(webcName.lastIndexOf('.'))
mj.each { jiraFile ->
def jiraName = jiraFile.name
def jiraNameWithoutExtension = jiraName.take(jiraName.lastIndexOf('.'))
if (jiraNameWithoutExtension.contains(webcNameWithoutExtension) && webcGroup == "3#Gotowe do akceptacji") {
} else if (!jiraNameWithoutExtension.contains(webcNameWithoutExtension)) {
println(jiraNameWithoutExtension)
}
}
}
我必须比较两个地图集合,并打印第一个地图的值是否包含第二个地图的值。
if 语句工作正常,但 else if 不行。它应该只打印 xoxoxox 但打印
Test integracji dział prawny cd. nowy
xoxoxoxx
Test integracji dział prawny cd. nowy
Test załącznika nowy
Test załącznika 3 nowa
xoxoxoxx
Test załącznika nowy
Test załącznika 3 nowa
xoxoxoxx
Test załącznika 2 nowy
Test integracji dział prawny cd. nowy
Test załącznika nowy
xoxoxoxx
Test załącznika 2 nowy
Test integracji dział prawny cd. nowy
Test załącznika nowy
Test załącznika 3 nowa
xoxoxoxx
Test załącznika 2 nowy
从脚本的角度来看,一切都是正确的,但打印太多。你能帮我一点忙吗?
首先,我认为部分问题在于,所有文件名 来自
mj
都是后固定的 now[ya]
所以实际上没有
与您在此处使用的规则重复。
Next
each
不能(真的)短路,所以有两个嵌套 each
你将为一些无用的工作以及可能一些错误的输出付出代价
(假设您不应该打印可能的重复项)。
所以我建议首先查找一下您正在查找的内容(注意, 也许你想关心那里的
novw[ay]
情况
也)。
然后迭代列表,你想要找到其中的欺骗者。
def m = [
[id: 7144, name: "Test załącznika.docx", group: "3#Gotowe do akceptacji"],
[id: 7145, name: "Test załącznika 2.docx", group: "3#Gotowe do akceptacji"],
[id: 7146, name: "Test integracji dział prawny cd..docx", group: "3#Gotowe do akceptacji"],
[id: 7147, name: "Test załącznika 3.docx", group: "3#Gotowe do akceptacji"],
[id: 7153, name: "Z.8.DRWS.P.01.F.01.PL.01 Wykaz dokumentów związanych i załączników.docx", group: "3#Gotowe do akceptacji"],
[id: 7154, name: "xoxoxoxx.docx", group: "3#Gotowe do akceptacji"], // to at least one missing
]
def mj = [
[id: 24930, name: "Test integracji dział prawny cd. nowy.docx"],
[id: 24931, name: "Test załącznika nowy.docx"],
[id: 24932, name: "Test załącznika 3 nowa.docx"],
[id: 23432, name: "xoxoxoxx.docx"],
[id: 24933, name: "Test załącznika 2 nowy.docx"]
]
def stripSuffix = { it.take(it.lastIndexOf('.')) }
// XXX: maybe add now[ay] handling here
def known = mj.stream().map{ stripSuffix it.name }.toSet()
m.each{
def webcNameWithoutExtension = stripSuffix(it.name)
if (!known.contains(webcNameWithoutExtension)) {
println webcNameWithoutExtension
}
}