在 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 许可协议

阅读 530
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 许可协议

推荐问题