在 JavaScript 中替代 array.splice

新手上路,请多包涵

我目前正在从事一个将数值存储在 JS 数组中的项目。经过一些更改后,它应该再次被删除。我目前使用这样的 array.splice 方法:

 function removeA(arr, element) {
    var index = arr.indexOf(element);
    if (index >= 0) {
        arr.splice(index, 1 );
    }
    return arr;
}

但这似乎给我带来了 Safari 上的问题。这段代码适用于所有浏览器,如 Chrome、Firefox、Opera。但不是在 Safari 上。它甚至适用于 Safari 的技术预览版。

有人有其他选择吗?

提前致谢 :)

原文由 nns 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 527
1 个回答

您必须在索引前后切片,以及 concat 结果。请注意, Array.prototype.slice() 不会像 Array.prototype.splice() 那样改变原始数组。

 var arr = [0, 1, 2, 3, 4, 5, 6, 7];
var index = 5;

var result = arr.slice(0, index).concat(arr.slice(index + 1));

console.log(result);

或者使用 ES6 和数组传播:

 var arr = [0, 1, 2, 3, 4, 5, 6, 7];
var index = 5;

var result = [...arr.slice(0, index), ...arr.slice(index + 1)];

console.log(result);

原文由 Ori Drori 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题