使用 TypeScript 从数组中删除具有特定 id 字段值的对象的聪明方法是啥? [复制]
Posted
技术标签:
【中文标题】使用 TypeScript 从数组中删除具有特定 id 字段值的对象的聪明方法是啥? [复制]【英文标题】:What is a smart way to delete an object having a specific id field value from an array using TypeScript? [duplicate]使用 TypeScript 从数组中删除具有特定 id 字段值的对象的聪明方法是什么? [复制] 【发布时间】:2020-09-23 08:52:05 【问题描述】:我不是很喜欢 TypeScript 和箭头函数,我正在寻找一个聪明的解决方案来解决以下问题。
我有一个这样的对象数组:
private events = [
id: 1, title: 'All Day Event', start: '2017-02-01',
id: 2, title: 'Long Event', start: '2017-02-07', end: '2017-02-10',
id: 3, title: 'Repeating Event', start: '2017-02-09T16:00:00',
id: 4, title: 'test', start: '2017-02-20T07:00:00',
];
我必须为我的类编写一个方法,该方法采用 id 字段的值并从 events 数组中删除此元素。
什么是完成这项任务的聪明方法?
【问题讨论】:
@jonrsharpe 不,在我看来这是完全不同的用例。它从数组中删除一个元素(一个数字)。我必须从该对象的 id 字段具有特定值的数组中删除一个对象 那又怎样?过程还是:1.找到索引; 2. 拼接出来。或过滤以创建没有该项目的新数组。或者如果您真的无法应用,请查看***.com/q/34336633/3001761。无论哪种方式,这都是通用的 JS,并且经过了简单的研究。 【参考方案1】:这能解决您的问题吗?或者我误解了你的问题
private getNewEvents = (id:number) =>
return events.filter(each=>each.id!=id)
过滤数组的每个对象,并从具有传递的 id 的数组中删除对象。
【讨论】:
【参考方案2】:在数组中找到你的项目的索引,然后splice()
它。
const events: id: number; title: string; start: string; end?: string; [] = [
id: 1, title: 'All Day Event', start: '2017-02-01',
id: 2, title: 'Long Event', start: '2017-02-07', end: '2017-02-10',
id: 3, title: 'Repeating Event', start: '2017-02-09T16:00:00',
id: 4, title: 'test', start: '2017-02-20T07:00:00',
];
function removeFromEventsById(a_oEvents: id: number; title: string; start: string; end?: string; [], a_iIdToRemove: number)
const ids: number[] = a_oEvents.map(event => event.id);
a_oEvents.splice(ids.indexOf(a_iIdToRemove), 1);
return a_oEvents;
console.log(removeFromEventsById(events, 3));
还有一点点:
function removeFromEventsById(a_oEvents: id: number; title: string; start: string; end?: string; [], a_iIdToRemove: number)
a_oEvents.splice(a_oEvents.map(event => event.id).indexOf(a_iIdToRemove), 1);
return a_oEvents;
【讨论】:
以上是关于使用 TypeScript 从数组中删除具有特定 id 字段值的对象的聪明方法是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何从 php 数组中删除具有特定值的所有元素? (以尽可能最短的方式)[重复]
如何从javascript或jquery中的元素数组中删除特定元素
告诉 TypeScript 编译器 Array.prototype.filter 从数组中删除某些类型的方法?