如何在TypeScript中删除数组项?

时间:2013-03-08 10:52:18

标签: typescript

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

15 个答案:

答案 0 :(得分:440)

与JavaScript相同。

delete myArray[key];

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

最好使用Array.prototype.splice函数:

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

答案 1 :(得分:124)

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

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

答案 2 :(得分:33)

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

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

答案 3 :(得分:13)

这是我的解决方案:

print(strtext.translate(string.punctuation))

答案 4 :(得分:11)

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

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

arr.splice(2,1);

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

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

arr.splice(arr.length,1);

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

答案 5 :(得分:8)

如果需要从数组中删除给定对象并且要确保以下内容,请使用此方法:

  • 列表未初始化
  • 数组长度已正确更新
    const objWithIdToRemove;
    const objIndex = this.objectsArray.findIndex(obj => obj.id === objWithIdToRemove);
    if (objIndex > -1) {
      this.objectsArray.splice(objIndex, 1);
    }

答案 6 :(得分:5)

使用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;

答案 7 :(得分:5)

这是一个简单的方法,用于按属性从对象数组中删除对象。

delete this.items[this.items.findIndex(item => item.item_id == item_id)];

this.items = this.items.filter(item => item.item_id !== item.item_id);

答案 8 :(得分:4)

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

departments: string[] = [];

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

答案 9 :(得分:3)

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

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

答案 10 :(得分:3)

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

答案 11 :(得分:1)

这对我有用

您的数组:

DummyArray: any = [
{"id": 1, "name": 'A'},
{"id": 2, "name": 'B'},
{"id": 3, "name": 'C'},
{"id": 4, "name": 'D'}]

功能:

remove(){
this.DummyArray = this.DummyArray.filter(item => item !== item);}

注意:此函数删除数组中的所有对象。如果要从数组中删除特定对象,请使用以下方法:

remove(id){
this.DummyArray = this.DummyArray.filter(item => item.id !== id);}

答案 12 :(得分:0)

只想为数组添加扩展方法。

interface Array<T> {
      remove(element: T): Array<T>;
    }

    Array.prototype.remove = function (element) {
      const index = this.indexOf(element, 0);
      if (index > -1) {
        return this.splice(index, 1);
      }
      return this;
    };

答案 13 :(得分:0)

您可以先尝试获取列表或数组的索引或位置,然后使用for循环将当前数组分配给临时列表,过滤掉不需要的项目并将所需的项目存储回原始数组

removeItem(index) {
    var tempList = this.uploadFile;
    this.uploadFile = [];

    for (var j = 0; j < tempList.length; j++) {
      if (j != index)
        this.uploadFile.push(tempList[j]);
    }
  }

答案 14 :(得分:0)

Typescript/Javascript 中的多个选项,用于从 Array 中删除元素。 拼接是最好的选择

  1. 它删除内联而不改变/创建新对象
  2. 它正确地更新了数组的长度(不会留下空白的空元素)

以下是使用 Splice 函数根据对象数组中的某个字段删除对象的示例

const persons = [
 {
   firstName :'John',
   lastName :'Michel'
  },
  {
   firstName :'William',
   lastName :'Scott'
  },  
  {
   firstName :'Amanda',
   lastName :'Tailor'
  }
]

console.log('Before Deleting :'+JSON.stringify(persons));
console.log('Deleting William:');
persons.splice(persons.findIndex(item => item.firstName === 'William'),1);
console.log('After Deleting William'+JSON.stringify(persons));