Xpages 是否从多值字段中删除值?

Xpages 是否从多值字段中删除值?,xpages,Xpages,我的文档中有一个多值字段,我希望根据该值删除一个值 我想到了这个: var doc:NotesDocument = rowData.getDocument(); var item:NotesItem = doc.getFirstItem("ValidProjects"); var a:Array = item.getValues() for (var v in a) dBar.info("Before removed V=" + v ); removeFromArray(a,composit

我的文档中有一个多值字段,我希望根据该值删除一个值

我想到了这个:

var doc:NotesDocument = rowData.getDocument();
var item:NotesItem = doc.getFirstItem("ValidProjects");
var a:Array = item.getValues()

for (var v in a)
dBar.info("Before removed V=" + v );

removeFromArray(a,compositeData.ProjectID);
doc.replaceItemValue("ValidProjects",a );

for (var v in a)
dBar.info("After removed V=" + v);


doc.save();


function removeFromArray(arr, val) {
for(var i=0; i<arr.length; i++) {
    dBar.info("Value = " + arr[i] + " Remove = " + val);
    if(arr[i] == val) {
        dBar.info("Removing " + i)
        arr.splice(i, 1);
        break;
    }
   }
}
var-doc:NotesDocument=rowData.getDocument();
变量项:NotesItem=doc.getFirstItem(“有效项目”);
变量a:Array=item.getValues()
对于(a中的var v)
dBar.info(“删除前V=”+V);
removeFromArray(a,compositeData.ProjectID);
文件替换项值(“有效项目”,a);
对于(a中的var v)
dBar.info(“删除后V=“+V”);
doc.save();
函数removeFromArray(arr、val){

对于(var i=0;i只是一个简单的例子…我不确定参数是否“通过引用”传递

如果不是,那就是原因。我通常更喜欢使用函数来返回值。从编程的角度来看,我发现阅读代码的功能更为清晰。在这个特定示例中,您可以将代码更改为:

  function removeFromArray(arr, val) {
    for(var i=0; i<arr.length; i++) {
        dBar.info("Value = " + arr[i] + " Remove = " + val);
        if(arr[i] == val) {
            dBar.info("Removing " + i)
            arr.splice(i, 1);
            break;
        }
       }
       return arr;
    }
您不写是否可以在“After…”消息中看到更改?-或者您只可以在文档中看到值没有更改

致意


/John

只是一个简单的例子……我不确定参数是否是“通过引用”传递的

如果不是,那就是原因。我通常更喜欢使用函数来返回值。从编程的角度来看,我发现阅读代码的功能更为清晰。在这个特定示例中,您可以将代码更改为:

  function removeFromArray(arr, val) {
    for(var i=0; i<arr.length; i++) {
        dBar.info("Value = " + arr[i] + " Remove = " + val);
        if(arr[i] == val) {
            dBar.info("Removing " + i)
            arr.splice(i, 1);
            break;
        }
       }
       return arr;
    }
您不写是否可以在“After…”消息中看到更改?-或者您只可以在文档中看到值没有更改

致意


/John将项目值视为向量

function removeFromItemValues(java.util.Vector vector, val) {
      // see http://docs.oracle.com/javase/6/docs/api/java
      vector.remove(val);
      return vector; //Optional
}

希望这有助于

将项目值视为向量

function removeFromItemValues(java.util.Vector vector, val) {
      // see http://docs.oracle.com/javase/6/docs/api/java
      vector.remove(val);
      return vector; //Optional
}

希望这有助于

item.getValues()返回java.util.Vector而不是数组。因此,这可能是问题的一部分。此外,我同意John的观点,我更希望函数返回值。在IBM Jscript()中没有正确实现array.splice。至少是用作SSJS的版本。正如Stephan Wissel所指出的,您可以使用更可预测的向量路由。item.getValues()返回一个java.util.Vector而不是数组。因此,这可能是问题的一部分。此外,我同意John的观点,我更喜欢函数返回一个值。在IBM Jscript()中没有正确实现array.splice。至少是用作SSJS的版本。正如Stephan Wissel所指出的,您可以使用更可预测的向量路由。显然,数组是通过引用传递的:显然,数组是通过引用传递的: