javascript – 无法从我的数组中删除偶数

我试图从数组中删除所有偶数,但它不会删除所有数字.不知道为什么

 var arr = [3,45,56,7,88,56,34,345];    
    for (var i = 0; i < arr.length; i++) {
      if (arr[i] % 2 === 0) {
        arr.splice(i,1);
      }
    }

的console.log(ARR);给出了这个 – [3,45,7,56,345]而不是[3,45,7,345]

有任何想法吗?

最佳答案
是的,那是因为当你从数组中拼出1个元素时,数组的长度会发生变化.试试这个 –

var arr = [3,45,56,7,88,56,34,345];

for (var i = 0; i < arr.length; i++) {
  if (arr[i] % 2 === 0) {
    arr.splice(i,1);
    i = i-1; // SINCE YOU DELETED ONE ELEMENT, 
             // THE NEXT ELEMENT IN THE ARRAY GETS SHIFTED TO ONE POSITION ABOVE 
             //(SAY, FROM INDEX 4 TO 3). SO, YOU WILL NEED TO CHECK FROM INDEX 3 NOT 4
  }
}

转载注明原文:javascript – 无法从我的数组中删除偶数 - 代码日志