【问题标题】:How to Clone an Array With a Removed Element? [duplicate]如何克隆具有已删除元素的数组? [复制]
【发布时间】:2020-04-22 03:45:17
【问题描述】:

我已经搜索了这个问题,而且似乎到处有人推荐使用 array.splice()。但是,拼接是就地的,例如,在我的 javascript 控制台编辑器中。

在我似乎搜索的所有地方,人们都说 splice 不会改变原始数组,但显然情况并非如此。现在,我确信我会找到另一种方法来做我想做的事,但是在不影响原始数组的情况下制作一个数组的副本的正确方法是什么?

【问题讨论】:

  • slice 不会改变原始数组。 splice 改变数组。名字有点像
  • MDN 的第一行:“splice() 方法通过删除或替换现有元素和/或添加新元素来更改数组的内容。”您需要改用slice()

标签: javascript


【解决方案1】:

您可以使用slice(),见下文:

let x = [1, 2, 3, 4, 5]

console.log(x);

let sliced = x.slice(0, 2);

console.log(x);
console.log(sliced);

slice() 方法将数组的一部分的浅拷贝返回到从开始到结束(不包括结束)选择的新数组对象中,其中开始和结束表示该数组中项目的索引。 原始数组不会被修改。

【讨论】:

  • 天哪。哇。出于某种原因,我将 slice 读作 splice,并且我一直试图弄清楚为什么每个人都建议使用它。我的大脑只看到东西
  • 你并不孤单@semiprocoder :)
【解决方案2】:

使用spread operator 复制数组,然后您可以使用splice 或其他。

let arr = [1, 2, 3, 4, 5];

let newArr = [...arr];

console.log(newArr);

// newArr.splice(......)

【讨论】:

  • 为什么要在 Set 中传递?这将删除重复值,这不是 OP 正在做的事情。
  • 好电话,已修改
猜你喜欢
  • 2013-09-15
  • 1970-01-01
  • 1970-01-01
  • 2020-07-27
  • 1970-01-01
  • 1970-01-01
  • 2013-01-26
  • 1970-01-01
  • 2014-11-16
相关资源
最近更新 更多