2017-03-25 8 views
0

これは私のコードスプライスは、私は、アレイ内のすべての「14」を削除したいのjavascript

var numbers = [14, 14, 16, 25]; 

for (var i = 0; i < numbers.length; i++){ 
if (numbers[i] === 14) 
numbers.splice(i,1) 
} 

では動作しません。

このメソッドは、重複する値を1つ削除し、配列を[14,16,25]として返します。あなたは過去をスキップしてきたにも14である。しかし、私はあなたが今インデックス0のインデックス0のエントリを削除し、1に上iを動かす。しかし、エントリためです、それは[16,25]

答えて

3

になりたいですそれ。

エントリを削除すると(の既存のアレイを変更する場合)、逆方向に処理するか、またはiを増やしません。 filterで完全に新しい配列を構築することができます。

あなたがエントリを削除するとき iを増加させない

var numbers = [14, 14, 16, 25]; 
 
for (var i = numbers.length - 1; i >= 0; i--) { 
 
    if (numbers[i] === 14) { 
 
    numbers.splice(i,1); 
 
    } 
 
} 
 
console.log(numbers);

var numbers = [14, 14, 16, 25]; 
 
var i = 0; 
 
while (i < numbers.length) { 
 
    if (numbers[i] === 14) { 
 
    numbers.splice(i,1); 
 
    } else { 
 
    ++i; 
 
    } 
 
} 
 
console.log(numbers);

を後方に行く

var numbers = [14, 14, 16, 25]; 
 
numbers = numbers.filter(function(value) { return value != 14; }); 
 
console.log(numbers);

filterを経由して新しい配列を作成します
関連する問題