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

Qua*_*ges -1 typescript angular ionic4

我已经在这里多次看到这个答案,但它对我不起作用。我需要从数组中删除一个项目,但索引继续返回 -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);
  }
Run Code Online (Sandbox Code Playgroud)

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

感谢您的帮助

wen*_*jun 9

由于数组中的每个元素都是一个,其中包含类型为 的object属性,因此您可以简单地使用Array.filter()来删除该元素。idstring

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'));
Run Code Online (Sandbox Code Playgroud)

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

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

const index = data.findIndex(obj => obj.id === removeId)
Run Code Online (Sandbox Code Playgroud)

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

if (index > -1) {
  array.splice(index, 1);
}
Run Code Online (Sandbox Code Playgroud)

const index = data.findIndex(obj => obj.id === removeId)
Run Code Online (Sandbox Code Playgroud)