我想在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/
您可以使用过滤器:
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)