这是我的代码
var numbers = [14, 14, 16, 25];
for (var i = 0; i < numbers.length; i++){
if (numbers[i] === 14)
numbers.splice(i,1)
}
我想删除所有&#34; 14&#34;在阵列中。
此方法只删除一个重复值并将数组返回为[14,16,25]。但我希望它是[16,25]
答案 0 :(得分:5)
这是因为您删除了索引0处的条目,并将i
移至1.但索引0处的条目现在也是14.您是&#39;我跳过了它。
当您删除条目(其中任何一个修改现有数组)时,向后工作或不增加i
;或通过filter
构建一个全新的数组。
向后走:
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);
&#13;
删除条目时不会增加i
:
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);
&#13;
通过filter
创建新数组:
var numbers = [14, 14, 16, 25];
numbers = numbers.filter(function(value) { return value != 14; });
console.log(numbers);
&#13;