如何在TypeScript中删除数组项?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在TypeScript中删除数组项?相关的知识,希望对你有一定的参考价值。

我有一个我在TypeScript中创建的数组,它有一个我用作键的属性。如果我有该密钥,我该如何从中删除一个项目?

答案

与在javascript中一样。

delete myArray[key];

请注意,这会将元素设置为undefined

更好地使用Array.prototype.splice功能:

const index = myArray.indexOf(key, 0);
if (index > -1) 
   myArray.splice(index, 1);

另一答案

如果array是对象的类型,那么最简单的方法是

let foo_object // Item to remove
this.foo_objects = this.foo_objects.filter(obj => obj !== foo_object);
另一答案

使用ES6,您可以使用以下代码:

removeDocument(doc)
   this.documents.forEach( (item, index) => 
     if(item === doc) this.documents.splice(index,1);
   );

另一答案

这是我的解决方案:

onDelete(id: number) 
    this.service.delete(id).then(() => 
        let index = this.documents.findIndex(d => d.id === id); //find index in your array
        this.documents.splice(index, 1);//remove element from array
    );

    event.stopPropagation();

另一答案

您可以在数组上使用splice方法来删除元素。

例如,如果您有一个名为arr的数组,请使用以下命令:

arr.splice(2,1);

所以这里索引为2的元素将是起点,参数2将决定要删除的元素数量。

如果要删除名为arr的数组的最后一个元素,请执行以下操作:

arr.splice(arr.length,1);

这将返回arr并删除最后一个元素。

另一答案

让部门是一个阵列。您想要从此数组中删除项目。

departments: string[] = [];

 removeDepartment(name: string): void 
    this.departments = this.departments.filter(item => item != name);
  
另一答案

使用TypeScript扩展运算符(...)回答

// Your key
const key = 'two';

// Your array
const arr = [
    'one',
    'two',
    'three'
];

// Get either the index or -1
const index = arr.indexOf(key); // returns 0


// Despite a real index, or -1, use spread operator and Array.prototype.slice()    
const newArray = (index > -1) ? [
    ...arr.slice(0, index),
    ...arr.slice(index + 1)
] : arr;
另一答案

使用Typescript的另一个解决方案:

let updatedArray = [];
for (let el of this.oldArray) 
    if (el !== elementToRemove) 
        updated.push(el);
    

this.oldArray = updated;

以上是关于如何在TypeScript中删除数组项?的主要内容,如果未能解决你的问题,请参考以下文章

如何区分 TypeScript 重载中的类型对象和数组?

如何使用 Typescript 在 mongoose 中正确键入对象 ID 数组

如何使用 Typescript 在 mongoose 中正确键入对象 ID 数组

如何在 React 和 Typescript 中映射我的 Union 类型的 GraphQL 响应数组

加载重新加载页面时如何删除数组中的所有对象?

可以在 Typescript 库中的 package.json 中将 @types 库作为正常依赖项吗?