Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript while循环中的If语句_Javascript_Arrays - Fatal编程技术网

Javascript while循环中的If语句

Javascript while循环中的If语句,javascript,arrays,Javascript,Arrays,此代码将从数组中删除所有“b”元素。确实如此,但并非完全如此。代码执行后仍有一个“b”。为什么会这样?当我们在splice方法中设置第三个参数以将一个“b”元素更改为另一个元素时,效果很好。但只有两个论点,没有。为什么? let array = ['a','b','c','b','d','e','d','b','b','b','d','d']; var i = 0; while (i < array.length){ if (array[i] === 'b'){ array.

此代码将从数组中删除所有“b”元素。确实如此,但并非完全如此。代码执行后仍有一个“b”。为什么会这样?当我们在splice方法中设置第三个参数以将一个“b”元素更改为另一个元素时,效果很好。但只有两个论点,没有。为什么?

let array = ['a','b','c','b','d','e','d','b','b','b','d','d'];

var i = 0;

while (i < array.length){

if (array[i] === 'b'){
    array.splice(i,1);
}
i++;
}
console.log(array);
let数组=['a','b','c','b','d','e','d','b','b','b','d','d'];
var i=0;
while(i
当应用
拼接
方法时,数组被
重新索引
。当从给定数组中删除一个元素时,您将跳过
索引

解决方案是在拼接后减小
i
的值

let数组=['a','b','c','b','d','e','d','b','b','b','d','d'];
var i=0;
while(iconsole.log(数组)
在每次迭代中,您都会递增
i
,但是当您删除一个“b”时,您会跳过一个额外的字符,因为删除该字符会使数组变短。在后续步骤中,我希望过滤掉该数组中元素“b”的每一次出现。不是全部。我无法使用filter()实现它。我会用这种方法完成工作吗?