繁体   English   中英

是否可以操作 Array.prototype.map() 的 index 参数?

[英]Is it possible to manipulate the index parameter of Array.prototype.map()?

我想知道在使用 map 函数时删除数组中的元素后是否可以做一个“索引--”。

例子:

arr.map((item, index) => item >= a && item <= b? item : arr.splice(index, 1));

删除该索引处的元素后,下一次迭代的索引需要为“index - 1”。 是否有可能以某种方式操纵 map 函数中的索引?

不是以任何优雅的方式。 更好的选择是完全避免splice ,而是仅使用从数组方法返回的新数组,丢弃旧数组。

如果要删除ab之间a项目,请使用.filter

const itemsNotBetweenAAndB = arr.map(item => item >= a || item <= b);

如果您必须使用 splice 来改变现有数组(我建议不要这样做,因为它丑陋且不纯),请使用for循环:

for (let i = arr.length - 1; i >= 0; i--) {
  if (arr[i] > a && arr[i] < b) {
    arr.splice(i, 1);
  }
}

.map应该仅用于基于转换原始数组的所有元素来创建新数组。 从这里开始,看起来您想从原始数组中删除元素而不转换每个项目, .map不合适,因为它不会帮助您实现目标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM