如何删除数组中的每个第二个和第三个元素?

Bob*_*Bob 7 javascript arrays

我想在Javascript中删除数组中的每个第二和第三个元素.

我的数组看起来像这样:

var fruits = ["Banana", "yellow", "23", "Orange", "orange", "12", "Apple", "green", "10"];
Run Code Online (Sandbox Code Playgroud)

现在我想删除每个第二和第三个元素.结果如下所示:

["Banana", "Orange", "Apple"]
Run Code Online (Sandbox Code Playgroud)

我试图使用for-loop和splice:

for (var i = 0; fruits.length; i = i+3) {
    fruits.splice(i+1,0);
    fruits.splice(i+2,0);
};
Run Code Online (Sandbox Code Playgroud)

当然,这会返回一个空数组,因为在循环仍然执行时会删除元素.

我该怎么做才能正确?

McS*_*tch 14

您可以从不同的角度处理此push()值,并且不希望将值删除到另一个数组中:

var firstFruits = []

for (var i = 0; i < fruits.length; i = i+3) {
    firstFruits.push(fruits[i]);
};
Run Code Online (Sandbox Code Playgroud)

这种方法可能不像使用那样简洁splice(),但我认为您在可读性方面看到了收益.


Rob*_*ert 10

这适合我.

var fruits = ["Banana", "yellow", "23", "Orange", "orange", "12", "Apple", "green", "10","Pear","something","else"];

for(var i = 0; i < fruits.length; i++) {
    fruits.splice(i+1,2);
}

//fruits = Banana,Orange,Apple,Pear
Run Code Online (Sandbox Code Playgroud)

这是一个演示,它更好地说明了它:http://jsfiddle.net/RaRR7/


Ale*_*low 5

您可以使用过滤器:

var filtered = [
   "Banana", 
   "yellow", 
   "23", 
   "Orange", 
   "orange", 
   "12", 
   "Apple", 
   "green", 
   "10"
].filter(function(_, i) {
    return i % 3 === 0;
})
Run Code Online (Sandbox Code Playgroud)

返回值:

["Banana", "Orange", "Apple"]
Run Code Online (Sandbox Code Playgroud)