使用 splice 从数组中删除元素的增量/递减 for 循环
incremental/ decremental for-loops for removing elements from an array using splice
我正在尝试从数组中删除虚假元素。当我 运行 一个像这里显示的那样的增量 for 循环时,它只删除索引 2 处的一个虚假值而不是索引 3 处的那个,但是当我 运行 一个递减 for 循环时,就像那个如下所示,它从数组中删除了两个(所有)虚假值。为什么?在我看来,我应该以任何一种方式遍历数组。我错过了什么?
function bouncer(arr) {
for(var i=0;i<arr.length;i++){
if(Boolean(arr[i]) === false){
arr.splice(i,1);
}
}
console.log(arr);
}
bouncer([7, "ate", "", false, 9]);
function bouncer(arr) {
for(var i=arr.length-1;i>=0;i--){
if(Boolean(arr[i]) === false){
arr.splice(i,1);
}
}
console.log(arr);
}
bouncer([7, "ate", "", false, 9]);
自从您使用 Splice 删除元素后,您就跳到了前面的元素。
每次删除元素时尝试将变量减 1。
function bouncer(arr) {
for(var i=0;i<arr.length;i++){
if(Boolean(arr[i]) === false){
arr.splice(i,1);
i--;
}
}
console.log(arr);
}
bouncer([7, "ate", "", false, 9]);
我正在尝试从数组中删除虚假元素。当我 运行 一个像这里显示的那样的增量 for 循环时,它只删除索引 2 处的一个虚假值而不是索引 3 处的那个,但是当我 运行 一个递减 for 循环时,就像那个如下所示,它从数组中删除了两个(所有)虚假值。为什么?在我看来,我应该以任何一种方式遍历数组。我错过了什么?
function bouncer(arr) {
for(var i=0;i<arr.length;i++){
if(Boolean(arr[i]) === false){
arr.splice(i,1);
}
}
console.log(arr);
}
bouncer([7, "ate", "", false, 9]);
function bouncer(arr) {
for(var i=arr.length-1;i>=0;i--){
if(Boolean(arr[i]) === false){
arr.splice(i,1);
}
}
console.log(arr);
}
bouncer([7, "ate", "", false, 9]);
自从您使用 Splice 删除元素后,您就跳到了前面的元素。 每次删除元素时尝试将变量减 1。
function bouncer(arr) {
for(var i=0;i<arr.length;i++){
if(Boolean(arr[i]) === false){
arr.splice(i,1);
i--;
}
}
console.log(arr);
}
bouncer([7, "ate", "", false, 9]);