Javascript 删除特定的只需要的第 n 个数组元素
Javascript Remove specific only needed n-th elements of array
例如我有一个数组
var fruits = ["Banana", "Orange", "Apple", "Mango", "App", "Man"];
代码
fruits.splice(2, 2);
Return我输出
Banana,Orange,App,Man
但是如何在不循环的情况下return仅从数组中提取 1,3,4 个元素?
所以我会得到
Orange,Mango,App
我成像一定是这样的
fruits.splice( fruits.indexOf(Orange,Mango,App), 1 );
您可以使用 filter
过滤掉某些项目:
fruits = fruits.filter(function (e, i) {
return i === 1 || i === 3 || i === 4;
});
或者,如果您想根据物品的身份保留某些物品(这似乎是您在问题末尾尝试做的事情):
fruits = fruits.filter(function (e) {
return e === "Orange" || e === "Mango" || e === "App";
});
您可以结合使用 slice
和 splice
方法:
var fruits = ["Banana", "Orange", "Apple", "Mango", "App", "Man"];
fruits.splice(2,1);
var x = fruits.slice(1,4);
x;
解释:
splice
删除从索引 2 开始的 1 个元素(即 "Apple" )。
slice
从索引 1 开始提取 3 个元素(即 "Orange"、"Apple"、"Mango"、"App";请记住,此时,该数组不再包含 "Apple").
变异(非破坏性):
var fruits = ["Banana", "Orange", "Apple", "Mango", "App", "Man"];
var x = fruits.slice(1,2).concat(fruits.slice(3,5));
x;
与 JLRishe 的答案相同,但您还可以传入要保留的那些元素的列表:
var fruits = ["Banana", "Orange", "Apple", "Mango", "App", "Man"];
var list = 'Orange, Mango, App';
alert(strip(fruits, list)); // ["Orange", "Mango", "App"]
function strip(arr, list) {
list = list.split(', ');
return arr.filter(function (el) {
return list.indexOf(el) > -1;
});
}
例如我有一个数组
var fruits = ["Banana", "Orange", "Apple", "Mango", "App", "Man"];
代码
fruits.splice(2, 2);
Return我输出
Banana,Orange,App,Man
但是如何在不循环的情况下return仅从数组中提取 1,3,4 个元素?
所以我会得到
Orange,Mango,App
我成像一定是这样的
fruits.splice( fruits.indexOf(Orange,Mango,App), 1 );
您可以使用 filter
过滤掉某些项目:
fruits = fruits.filter(function (e, i) {
return i === 1 || i === 3 || i === 4;
});
或者,如果您想根据物品的身份保留某些物品(这似乎是您在问题末尾尝试做的事情):
fruits = fruits.filter(function (e) {
return e === "Orange" || e === "Mango" || e === "App";
});
您可以结合使用 slice
和 splice
方法:
var fruits = ["Banana", "Orange", "Apple", "Mango", "App", "Man"];
fruits.splice(2,1);
var x = fruits.slice(1,4);
x;
解释:
splice
删除从索引 2 开始的 1 个元素(即 "Apple" )。slice
从索引 1 开始提取 3 个元素(即 "Orange"、"Apple"、"Mango"、"App";请记住,此时,该数组不再包含 "Apple").
变异(非破坏性):
var fruits = ["Banana", "Orange", "Apple", "Mango", "App", "Man"];
var x = fruits.slice(1,2).concat(fruits.slice(3,5));
x;
与 JLRishe 的答案相同,但您还可以传入要保留的那些元素的列表:
var fruits = ["Banana", "Orange", "Apple", "Mango", "App", "Man"];
var list = 'Orange, Mango, App';
alert(strip(fruits, list)); // ["Orange", "Mango", "App"]
function strip(arr, list) {
list = list.split(', ');
return arr.filter(function (el) {
return list.indexOf(el) > -1;
});
}