如何从打字稿中的数组中删除项目

How to delete item from an array in typescript

我已经多次在此处看到此答案,但它对我不起作用。我需要从数组中删除一个项目,但索引继续返回 -1。

  deleteItinerary(id: string) {
    this.dataSvc.removeItinerary(id);
    console.log('id', id);
    const index = this.itineraries.indexOf(id);
    console.log('array', this.itineraries);
    console.log('index', index);
  }

我在这里看到这个答案,我们应该使用 array.indexOf()。我正在做一个控制台日志来验证 id 是否正确并且它存在于数组中但索引一直给我 -1。

感谢您的帮助

由于数组中的每个元素都是一个 object,其中包含 id 的 属性 类型 string,您可以简单地使用 Array.filter() 摆脱那个元素。

const data = [{id:'2'}, {id:'5'}, {id:'9'}];

const removeItinerary = (removeId) => {
  const res = data.filter(obj => obj.id !== removeId);
  return res;
}

console.log(removeItinerary('5'));

Array.splice() 在您的实例中不起作用,除非您提供要删除的对象的索引。

如果您坚持使用Array.splice(),首先,您需要在该数组中找到与特定id匹配的对象的索引。

const index = data.findIndex(obj => obj.id === removeId)

接下来,您使用 Array.splice 从数组中删除对象。

if (index > -1) {
  array.splice(index, 1);
}

const data = [{id:'2'}, {id:'5'}, {id:'9'}];

const removeItinerary = (removeId) => {
  const index = data.findIndex(el => el.id === '5')
  if (index > -1) {
    data.splice(index, 1);
  }
  return data;
}

console.log(removeItinerary('5'));