forEach数组,如果value是奇数从数组中删除

时间:2015-12-04 07:04:25

标签: javascript

我正在尝试使用以下代码从数组中删除所有偶数项目:

var myArray = [1,2,3,4,5,6];  

myArray.forEach(function(item) {    
  if (item%2 == 0) {
    myArray.splice(item); 
  } 
}); 

我认为错误的地方在于拼接?

4 个答案:

答案 0 :(得分:4)

你可以这样做:

var myarray = [1,2,3,4,5,6]
  filtered = myarray.filter(function(el, index) {
    return index % 2 === 1;
  });

输出:[2,4,6]

答案 1 :(得分:3)

你应该这样做:

var myArray = [1,2,3,4,5,6];  

myArray.forEach(function(item, x) {    
  if (item%2 == 0) 
    myArray.splice(x, 1); // Remove 1 item from index x
}); 

Fiddle

或者更好的方式来使用.filter(IE8 +)

var myArray = myArray.filter(function(item) {    
      return item % 2 ==0  ?  false  :  true; // Return false if item is even and true other way round.
}); 

Fiddle

答案 2 :(得分:2)

是的,拼接由索引

完成
var myArray = [1,2,3,4,5,6];  

myArray.forEach(function(item) {    
  if (item%2 == 0) {
   var index = myArray.indexOf(item); 
    myArray = myArray.splice(index,1); 
  } 
}); 

答案 3 :(得分:2)

filter()会更好

  var arr = myArray.filter(function(item) {    
      return item % 2 ==0  ?  true  :  false;
   });