【发布时间】:2019-02-09 09:15:56
【问题描述】:
有没有更好的方法将 Notes 文档中的两个多值字段展平为 SSJS 中的地图集合?
到目前为止,我得出以下结论:
var vw:NotesView = database.getView("configuration");
if(null != vw){
var doc:NotesDocument = vw.getFirstDocument();
if (null != doc){
var itemname1:string = "userName";
var itemname2:string = "inboxFile";
if(doc.hasItem(itemname1) && doc.hasItem(itemname2)){
var itemvalues1:java.util.Vector = doc.getItemValue(itemname1);
var itemvalues2:java.util.Vector = doc.getItemValue(itemname2);
if(itemvalues1.size() == itemvalues2.size()){
var map = new java.util.HashMap();
var iterator1 = itemvalues1.iterator();
var iterator2 = itemvalues2.iterator();
}
while (iterator1.hasNext()) {
var itemvalue1 = iterator1.next();
var itemvalue2 = iterator2.next();
if ((typeof(itemvalue1)).endsWith("string")) {
map.put(itemvalue1.left(80), itemvalue2.left(80));
}
}
sessionScope.put("setupInbox",map)
}
}
}
【问题讨论】:
-
发现这很相似,stackoverflow.com/questions/1839668/… 看起来您的解决方案可能很简单,但您可能需要检查两个列表的长度以防它们不同。
-
我宁愿使用 Simon Delicata 提供的链接中的解决方案。尽管该解决方案非常相似,但它不会带来额外的迭代器开销,这是不需要的,因为您的向量不会在迭代周期中被修改
标签: xpages xpages-ssjs