使用 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 从数组中删除某些类型的方法?

Typescript 函数,它从具有正确类型的数组中返回一项

typescript 从数组中删除dublicates

TypeScript - 根据属性值从数组中取出对象