javascript - 是否可以操作 Array.prototype.map() 的索引参数?

标签 javascript arrays

我想知道在使用map函数删除数组中的元素后是否可以执行“index--”。

示例:

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

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

最佳答案

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

如果要删除 ab 之间的项目,请使用 .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不合适,因为它不会帮助您完成目标。

关于javascript - 是否可以操作 Array.prototype.map() 的索引参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64948015/

相关文章:

jquery - 将 jQuery 数组发布到 Django

arrays - 将 switch 语句与数组一起使用时,类型 '[String]' 的表达式模式无法匹配类型 '[String]' 的值

php - 使用 JavaScript 和 PHP 对信用卡进行编码

javascript - 使用 uploadify 上传图像后刷新图像

javascript - 在 moment JS 中设置语言环境将不起作用

javascript - 匹配连字符的 float

javascript - 多行字符串 findIndex()

php - 从数组中动态加载 mysql 表字段

Javascript 无法正确排序 DECIMAL 数字

javascript - 为什么我的数组在 React 中没有引用而复制?