1

重複の可能性:
配列内の特定のインデックスの値を削除/削除する

Javascript を使用して、特定のインデックスで配列から一連の要素を削除するにはどうすればよいですか。

インデックス配列があるとします:

var indices = [0, 1, 3].

これらの指定された別の配列から要素を削除したいindices。その他の配列はたまたま次のとおりです。

var cars = ["Cow", "Dog", "Ferrari", "Monkey", "Ford"].

carsしたがって、削除後、「Cow」、「Dog」、「Monkey」を配列から削除したい

私は方法を試しましたsplice

for(var i = 0; i < indices.length; i++){
   cars.splice(indices[i], 1);
}

carsしかし、このコードは、アイテムがスプライスされるたびに配列のインデックスを変更します!

4

4 に答える 4

2

これを試して

var cars = ["Cow", "Dog", "Ferrari", "Monkey", "Ford"];
console.log(cars);

cars.each(function(val, index){
    // You can use jQuery inArray also.  
    //For Ex: if(jQuery.inArray(index, indices)){........}
    if(val=="Cow" || val=="Dog" || val=="Monkey" ){
        cars.splice(index, 1);
    }
});
console.log(cars);

JAVASCRIPT: 次に、.forEach代わりに使用します.each

于 2012-12-27T06:28:41.220 に答える
1

最後の要素から開始できます。

for(var i = indices.length-1; i >= 0; i--){
   cars.splice(indices[i], 1);
}
于 2012-12-27T05:01:23.730 に答える
0

deleteインデックスを変更せずに要素を削除するために使用できます。

var a = [1, 2, 3, 4, 5];
delete a[2]; // deletes '3'
console.log(a); // prints [1, 2, undefined, 4, 5]

を使用splice()して要素を削除し、残りをシフトして削除されたインデックスを埋めることができます

var b = [1, 2, 3, 4, 5];
b.splice(2, 1); // deletes '3' and shifts the rest to left
console.log(b); // prints [1, 2, 4, 5]
于 2012-12-27T05:31:10.787 に答える
-1

Splice メソッドは項目を完全に削除するため、「しかし、このコードでは、項目が接合されるたびに車のオブジェクトのインデックスが変更されます。」要素を厳密に削除します。同じ配列インデックスを維持したい場合は、要素を削除(削除)する代わりに、命名規則IDを「削除済み」またはおなじみの命名IDとして使用できます

for(var i = 0; i < index.length; i++){ car​​[indices[i]] = "削除"; }

これにより、必要に応じて同じ配列インデックスを維持できます。

-1 の理由を説明してください。それは値するものではありません、またはそれを正当化します。

于 2012-12-27T05:06:30.870 に答える