Hello! 欢迎来到小浪资源网!



JavaScript splice方法删除数组元素后,为什么返回的不是修改后的数组?


JavaScript splice方法删除数组元素后,为什么返回的不是修改后的数组?

数组删除疑惑

JavaScript 的 splice 方法用于从数组中删除元素。然而,它返回已删除元素的副本,而不是修改后的数组。

问题场景

考虑以下代码:

立即学习Java免费学习笔记(深入)”;

console.log(['1', '2', '3', '4', '5'].splice(3, 1));

你会惊讶地发现输出是 [‘4’],而不是期望的 [‘1’, ‘2’, ‘3’, ‘5’]。

原因分析

splice 方法有三个参数:

  • 起始索引(本例中的 3)
  • 删除元素的数量(本例中的 1)
  • 要插入的新元素(本例中未提供)

splice 删除 arr[3](即 “4”),并返回一个包含已删除元素的数组。因此,输出为 [‘4’]。

解决方法

如果你想要返回修改后的数组,可以使用 tospliced 方法:

console.log(['1', '2', '3', '4', '5'].toSpliced(3, 1)); // 输出 ['1', '2', '3', '5']

tospliced 方法在修改数组的同时返回修改后的数组。

相关阅读