2009-09-27 7 views
1

J'utilise Google Web Tools, et j'ai un JsArray, que je remplis avec des données de JSON. Je suis en mesure de modifier des éléments dans le tableau et d'ajouter des éléments, mais je ne peux pas comprendre comment supprimer un élément de celui-ci. Je cherche quelque chose de similaire à la méthode pop() en JavaScript.Comment supprimer un élément d'un JsArray dans Google Web Tools?

je peux ajouter un élément au tableau en utilisant la méthode set(index,value) avec un index qui est hors de portée du tableau, donc j'essayé d'utiliser set(index,null) pour l'enlever, mais le tableau a encore l'élément, il est juste nul. (ie la longueur du tableau est inchangée.)

J'utilise actuellement une méthode hacky dans laquelle je crée un nouveau tableau, et copie tous les éléments sauf le dernier de l'ancien vers le nouveau, mais j'espère Je n'ai pas à vivre avec ça, parce que c'est moche.

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; 
} 

Répondre

1

Il n'y a pas pop(), mais il n'y a ... shift() :)

Qu'ou étendre la classe JsArray, quelque chose comme ça (non testé, mais vous devriez obtenir l'idée):

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

    protected JsArrayPop() { 
    } 

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

} 
+0

Je ne vois pas de méthode 'shift()' - à moins que ce ne soit une blague qui soit passée par-dessus ma tête - mais étendre la classe 'JsArray' fait l'affaire. – sernaferna

+1

Peut-être parce que j'utilise ma propre version 2.0-SNAPSHOT, mais je suis sûr que ma version de 'com.google.gwt.core.client.JsArray ' a une méthode 'shift()' (bien sûr, c'est aussi simple que la méthode 'pop()', vous pouvez donc l'ajouter facilement). –

Questions connexes