4

本当にProcessingに配列を操作するためのプッシュメソッドとポップメソッドがあればいいのですが、それがないので、配列内の特定の位置にあるオブジェクトを削除するための最良の方法を見つけようとしています。これは多くの人にとって基本的なことだと思いますが、助けを借りることができ、Processingリファレンスを参照してもあまり理解できませんでした。

重要ではないと思いますが、参考までに、最初にオブジェクトを追加するために使用したコードを次に示します。

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

この質問のために、位置15からオブジェクトを削除したいとします。ありがとうございます。

4

5 に答える 5

6

単純な配列よりも多くのメソッドを使用できるArrayListの使用を検討することもできます。

を使用して、15 番目の要素を削除できます。myArrayList.remove(14)

于 2010-04-29T23:07:52.670 に答える
0

あなたの最善の策は、arraycopyを使用することだと思います。src と dest に同じ配列を使用できます。次のようなもの (未テスト):

// 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);
于 2010-03-17T15:12:32.973 に答える
-1

この質問はずっと前に出されたことは知っていますが、多くの人がまだ答えを探しているようです。私はちょうどこれを書いた。いくつかの方法でテストしましたが、希望どおりに動作するようです。

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

それが一つの方法です。配列をループすることもできると思います。何かのようなもの ...

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;

...それもうまくいくはずだと思います。これが必要な人に役立つことを願っています。

于 2016-12-23T08:28:54.677 に答える