在javascript中使用array.map()时,从数组中删除上一个和下一个元素

在javascript中使用array.map()时,从数组中删除上一个和下一个元素,javascript,arrays,Javascript,Arrays,如何在使用array.map()时从数组中删除上一个和下一个元素 在下面的代码中,当我进入“交叉”时,我想同时删除“SUV”和“sedan” 以下代码删除“sedan”和“truck”,而不是“sedan”和“SUV” 您不应该删除.map交互上的元素,因为数组大小和数组索引都会改变 您应该尝试以下方法: 让arr=[‘挖掘机’、‘SUV’、‘跨界车’、‘轿车’、‘卡车’]; arr=arr.filter(元素=>元素!=“交叉”); arr=arr.map(ele=>`${ele}:sell

如何在使用array.map()时从数组中删除上一个和下一个元素

在下面的代码中,当我进入“交叉”时,我想同时删除“SUV”和“sedan”

以下代码删除“sedan”和“truck”,而不是“sedan”和“SUV”


您不应该删除
.map
交互上的元素,因为数组大小和数组索引都会改变

您应该尝试以下方法:

让arr=[‘挖掘机’、‘SUV’、‘跨界车’、‘轿车’、‘卡车’];
arr=arr.filter(元素=>元素!=“交叉”);
arr=arr.map(ele=>`${ele}:selled.`);

控制台日志(arr)您可以先删除元素,然后映射数组,下面是一个示例:

让arr=[‘挖掘机’、‘SUV’、‘跨界车’、‘轿车’、‘卡车’];
arr.拼接(arr.indexOf(‘交叉’)-1,3,‘交叉’);
arr=arr.map((ele)=>{
返回ele+“:已售出。”;
});

控制台日志(arr)依我看,itus有正确的答案,但为了好玩,这是另一种方式:

let arr = ['excavator','SUV','crossover','sedan','truck'] ;

let suvIndex = null;
const result = arr.map((item, index) => {
  if (item === "SUV") {
    suvIndex = index;
  }

  if(suvIndex && index <= suvIndex + 2) {
    return null;
  }

  return item;
}).filter(chunk => chunk)

console.log(result);
让arr=[‘挖掘机’、‘SUV’、‘跨界车’、‘轿车’、‘卡车’];
设suvIndex=null;
const result=arr.map((项目、索引)=>{
如果(项目==“SUV”){
suvIndex=指数;
}
if(suvIndex和索引块)
控制台日志(结果);

在迭代时修改iterable会有一个常规问题,那就是弄乱迭代器,然后必须手动调整。如果可能,请避免这种情况。在您的情况下,新数组的构造已经通过了“SUV”,因此,删除时不会产生预期效果,反而会弄乱迭代器。如果数组操作的最终结果是一个不同长度的数组,这通常是一个指标,表明您最好不要使用
.map()
。听起来您需要
.filter()
.map()
,或者您可以将逻辑组合成一个
.reduce()
。这个代码没有用,他提出的问题是从阵列中消除suv和轿车,而不是交叉
let arr = ['excavator','SUV','crossover','sedan','truck'] ;

let suvIndex = null;
const result = arr.map((item, index) => {
  if (item === "SUV") {
    suvIndex = index;
  }

  if(suvIndex && index <= suvIndex + 2) {
    return null;
  }

  return item;
}).filter(chunk => chunk)

console.log(result);