Angular 9 如何删除具有用户指定索引范围的数组中的一系列对象?

Angular 9 How to delete a range of objects inside an array having indexes range specified by a user?

我正在尝试使用用户指定的索引从对象数组中删除对象。当用户指定 mn 之间的范围时,这意味着所有索引小于 m 或高于 n 的数组,我希望它们从数组。

我在(m=0n=7 时尝试了以下操作:

for (const array in this.data) {
  if (parseInt(array) <= 0 || parseInt(array) >7) {
    this.data.splice(parseInt(array))
  }
}
console.log(this.data)

它工作正常,但是一旦我将 m 更改为 1,所有数组都被清空。

这里是stackblitz.

你的主要问题是获取删除后剩余的对象。这里 Array.slice 函数来拯救。

Array.slice不修改原数组。它只是 returns 一个新的元素数组,它是原始数组的子集。

Array.slice签名

arr.slice(startIndex, endIndex);

考虑以下数组:

const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8];

要从值 [2, 3, 4, 5] 获取数组的一部分,我们写:

var slicedArr = arr.slice(2, 6);

请注意,在这里,我们将第二个参数设为 6 而不是 5。 执行上面的代码后,我们得到的值为:

arr // [0, 1, 2, 3, 4, 5, 6, 7, 8]
slicedArr // [2, 3, 4, 5]

Array.splice 的第二个参数是要删除的元素数。 https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_splice

如果未指定,它将删除指定索引中的所有元素,包括指定索引。