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";
});

您可以结合使用 slicesplice 方法:

 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;
    });
}