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

时间:2019-06-12 02:31:47

标签: angular typescript 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);
  }

我在这里看到了这个答案,我们应该使用array.indexOf()。我正在做一个控制台日志,以验证ID是否正确以及它是否存在于数组中,但索引始终为我提供-1。

感谢您的帮助

1 个答案:

答案 0 :(得分: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'));

相关问题