我在TypeScript中创建了一个数组,它有一个属性,我把它用作键。如果我有那把钥匙,我怎么能从里面删除一个项目?


当前回答

如果你需要从数组中删除一个给定的对象,并且你想确定以下情况,请使用此方法:

列表没有重新初始化 正确更新数组长度

    const objWithIdToRemove;
    const objIndex = this.objectsArray.findIndex(obj => obj.id === objWithIdToRemove);
    if (objIndex > -1) {
      this.objectsArray.splice(objIndex, 1);
    }

其他回答

let a: number[] = [];

a.push(1);
a.push(2);
a.push(3);

let index: number = a.findIndex(a => a === 1);

if (index != -1) {
    a.splice(index, 1);
}

console.log(a);

这是我的解决方案:

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, 1);

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

例子:

var arr = ["orange", "mango", "banana", "sugar", "tea"];
arr.splice(arr.length-1, 1)
console.log(arr); // return ["orange", "mango", "banana", "sugar"]
_.pull(array,'a'); 

使用lib lodash https://lodash.com/docs/4.17.15#pull complelte代码:

import _ from 'lodash';
const allTagList = ['a','b','b']
_.pull(allTagList, b);
console.log(allTagList) // result: ['a']

PS: Lodash提供了大量的操作符,建议使用它来简化您的代码。https://lodash.com

Let departments是一个数组。您要从此数组中删除一项。

departments: string[] = [];

 removeDepartment(name: string): void {
    this.departments = this.departments.filter(item => item != name);
  }