在javascript中使用array.map()时,从数组中删除上一个和下一个元素
如何在使用array.map()时从数组中删除上一个和下一个元素 在下面的代码中,当我进入“交叉”时,我想同时删除“SUV”和“sedan” 以下代码删除“sedan”和“truck”,而不是“sedan”和“SUV”在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
您不应该删除
.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);