Domanda

Vorrei davvero Processing aveva Push e pop metodi per lavorare con l'Array, ma dal momento che non ho lasciato cercando di capire il modo migliore per rimuovere un opporsi in una posizione specifica in un array. Sono sicuro che questo è così semplice come si ottiene per molte persone, ma potrei usare un certo aiuto con esso, e non sono stato in grado di capire molto fuori dalla navigazione in riferimento Processing.

Non credo sia importante, ma per il vostro riferimento qui è il codice che ho usato per aggiungere gli oggetti inizialmente:

Flower[] flowers = new Flower[0];

for (int i=0; i < 20; i++)
{
    Flower fl = new Flower();
    flowers = (Flower[]) expand(flowers, flowers.length + 1);
    flowers[flowers.length - 1] = fl;
}

Per il bene di questa domanda, supponiamo che voglio rimuovere un oggetto dalla posizione 15. Grazie, ragazzi.

È stato utile?

Soluzione

Credo che la soluzione migliore è quella di utilizzare arraycopy. È possibile utilizzare lo stesso array per src e dest. Qualcosa di simile a quanto segue (non testata):

// move the end elements down 1
arraycopy(flowers, 16, flowers, 15, flowers.length-16);
// remove the extra copy of the last element
flowers = shorten(flowers);

Altri suggerimenti

Si potrebbe anche voler considerare l'utilizzo ArrayList che ha più metodi disponibili di un array di pianura.

È possibile rimuovere l'elemento XV utilizzando myArrayList.remove(14)

So che questa domanda è stato chiesto molto tempo fa ma sembra un sacco di persone sono ancora alla ricerca di una risposta. Ho appena scritto questo. Ho provato un paio di modi e sembra funzionare il modo in cui ho voluto che.

var yourArr = [1, 2, 3, 4];                                // use your array here
var removeIndex = 1;                                       // item to get rid of 

var explode = function(array, index) {                     // create the function
    var frontSet = subset(array, 0, index - 1);            // get the front
    var endSet = subset(array, index , array.length - 1);  // get the end
    yourArr = concat(frontSet, endSet);                    // join them
};

explode(yourArr, removeIndex);                             // call it on your array

Questo è un modo. Credo che si potrebbe scorrere l'array pure. Qualcosa di simile ...

var yourArr = [1, 2, 3, 4];
var removeIndex = 2;
var newArr = [];

for(var i = 0; i < yourArr.length; i++) {
    if(i < removeIndex) {
        append(newArr, yourArr[i]);
    } else if(i > removeIndex) {
        append(newArr, yourArr[i]);
    }
}

yourArr = newArr;

... penso che dovrebbe funzionare anche. Spero che questo aiuti qualcuno che ne ha bisogno.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top