如何从Google Web Tools中的JsArray中删除元素?

时间:2009-09-27 00:44:52

标签: json gwt

我正在使用 Google Web Tools ,并且拥有JsArray,我正在填充来自JSON的数据。我可以修改数组中的项目并向其添加项目,但我无法弄清楚如何从中删除项目。我正在寻找与JavaScript中的pop()方法类似的东西。

我可以使用set(index,value)方法将一个项添加到数组中,index超出数组的范围,所以我尝试使用set(index,null)删除它,但数组仍然有项目,它只是空。 (即数组的长度不变。)

我目前正在使用一种hacky方法,我创建一个新数组,并将除最后一个元素之外的所有元素从旧版本复制到新版本,但我希望我不必忍受它,因为它太丑了。

private final JsArray<JsArrayInteger> popItemFromArray(
        JsArray<JsArrayInteger> oldArray) {
    // the createEmpty...  method is a native method which returns eval("[]")
    JsArray<JsArrayInteger> newArray = createEmptyIntIntArray();

    for (int i = 0; i < oldArray.length() - 1; i++) {
        newArray.set(i, oldArray.get(i));
    }

    return newArray;
}

1 个答案:

答案 0 :(得分:1)

没有pop(),但有...... shift():)

要么扩展JsArray类,要么像这样(未经测试,但你应该明白这一点):

public class JsArrayPop<T extends JavaScriptObject> extends JsArray<T> {

  protected JsArrayPop() {
  }

  public final native T pop() /*-{
    return this.pop();
  }-*/;

}