Pregunta

Realmente deseo Procesamiento tenía empuje y POP métodos para trabajar con matrices, pero ya que no me quedo tratando de averiguar la mejor manera de eliminar una oponerse en una posición específica en una matriz. Estoy seguro que esto es tan sencillo como se hace para muchas personas, pero que podría utilizar un poco de ayuda con ella, y no he podido averiguar mucho salir navegando por la referencia procesamiento.

No creo que importe, pero para su referencia aquí es el código que utiliza para agregar los objetos inicialmente:

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

En aras de esta pregunta, vamos a suponer que quiero eliminar un objeto de posición 15. Gracias, chicos.

¿Fue útil?

Solución

Creo que la mejor opción es utilizar arraycopy. Puede utilizar la misma matriz de src y dest. Algo como lo siguiente (no probado):

// 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);

Otros consejos

También es posible que desee considerar el uso ArrayList que tiene más métodos disponibles que un array plano.

Se puede quitar el elemento XV mediante el uso de myArrayList.remove(14)

Sé que esta pregunta fue hecha hace mucho tiempo, sin embargo, parece que mucha gente sigue buscando la respuesta. Me acabo de escribir esto. Lo he comprobado algunas de las formas y parece funcionar de la manera que quería.

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

Esto es una forma. Creo que se puede recorrer la matriz también. Algo así como ...

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;

... piensan que debería funcionar también. Espero que esto ayude a alguien que lo necesite.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top