📌  相关文章
📜  在不更改原始数组的情况下删除索引处的元素 - Javascript (1)

📅  最后修改于: 2023-12-03 14:51:23.312000             🧑  作者: Mango

在不更改原始数组的情况下删除索引处的元素 - JavaScript

在JavaScript中,有时候我们需要删除数组中的某个元素,但又不想修改原始数组。这时候,我们可以使用一些方法来创建一个新的数组,这个新数组中不包含我们需要删除的元素。

使用slice方法
const originalArray = ['apple', 'banana', 'orange', 'pear'];
const indexToRemove = 1;
const newArray = originalArray.slice(0, indexToRemove).concat(originalArray.slice(indexToRemove + 1));
console.log(newArray); // ['apple', 'orange', 'pear']
console.log(originalArray); // ['apple', 'banana', 'orange', 'pear']

在上面的例子中,我们首先定义了原始数组 originalArray 和索引 indexToRemove。然后,我们使用 slice 方法来创建一个新数组:

  • originalArray.slice(0, indexToRemove) 返回从 0 到 indexToRemove(不包括 indexToRemove)的元素。
  • originalArray.slice(indexToRemove + 1) 返回从 indexToRemove + 1 到数组结尾的元素。

接着,我们使用 concat 方法将两个数组合并成一个新数组,这个新数组中不包含原始数组中需要删除的元素。

注意,我们在控制台输出 originalArray 时,发现原始数组没有被修改。这是因为 slice 方法返回的是一个新的数组,而不是修改原始数组。

使用spread操作符
const originalArray = ['apple', 'banana', 'orange', 'pear'];
const indexToRemove = 1;
const newArray = [...originalArray.slice(0, indexToRemove), ...originalArray.slice(indexToRemove + 1)];
console.log(newArray); // ['apple', 'orange', 'pear']
console.log(originalArray); // ['apple', 'banana', 'orange', 'pear']

上面的例子使用了 spread 操作符(...)来将两个数组合并成一个新数组。冒号左侧的 ... 表示将数组拆分成单独的元素,而右侧的 ... 则表示将这些元素放到一个新数组中。

使用filter方法
const originalArray = ['apple', 'banana', 'orange', 'pear'];
const indexToRemove = 1;
const newArray = originalArray.filter((_, index) => index !== indexToRemove);
console.log(newArray); // ['apple', 'orange', 'pear']
console.log(originalArray); // ['apple', 'banana', 'orange', 'pear']

我们还可以使用 filter 方法来创建一个新数组,这个新数组中不包含我们需要删除的元素。

在上面的例子中,我们调用 filter 方法来遍历原始数组 originalArray,其中的 _ 表示我们不关心当前遍历到的元素,而只需要知道当前元素的索引。我们使用 indexindexToRemove 进行比较,如果相等则返回 false,否则返回 true,这样就达到了删除指定索引处的元素的目的。

同样,我们在控制台输出 originalArray 时,发现原始数组没有被修改。这是因为 filter 方法返回的也是一个新数组。

以上就是在不更改原始数组的情况下删除索引处的元素的方法。无论使用哪种方法,我们都可以创建一个新的数组,这个新数组中不包含需要删除的元素。这样就避免了直接修改原始数组带来的潜在风险。