我已经在这里多次看到这个答案,但这对我没有用。我需要从数组中删除一个项目,但索引会继续返回-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。
感谢您的帮助
答案 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'));