为了账号安全,请及时绑定邮箱和手机立即绑定

尝试根据返回值过滤对象数组

尝试根据返回值过滤对象数组

蝴蝶刀刀 2021-10-07 10:43:33
我有这个要过滤的对象的 TypeScript 数组,const test: any[] = [  {agency: 'SOME AGENCY 1', id: '1', association: '2433982101'},  {agency: 'SOME AGENCY 1', id: '2', association: '2433982101'},  {agency: 'SOME AGENCY 1', id: '3', association: '1917874801'},  {agency: 'SOME AGENCY 2', id: '4', association: '2433982101'},  {agency: 'SOME AGENCY 2', id: '5', association: '2433982101'},  {agency: 'SOME AGENCY 2', id: '6', association: '1917874801'},  {agency: 'SOME AGENCY 2', id: '7', association: '1917874801'},  {agency: 'SOME AGENCY 2', id: '8', association: '2102923701'},  {agency: 'SOME AGENCY 3', id: '9', association: '2433982101'},  {agency: 'SOME AGENCY 3', id: '10', association: '2433982101'},  {agency: 'SOME AGENCY 3', id: '11', association: '1917852501'}]尝试使用以下这些值从上面的数组中过滤数据,我得到了 onChange 回调函数,onChange = (agency: string) => (    association: string[]  ) => {}// I am getting these values in callback// agency = 'SOME AGENCY 2'// association = ['2433982101', '2102923701']// OR in another case// agency = 'SOME AGENCY 1'// association = ['2433982101']我正在尝试删除回调中特定机构的关联数组中未返回的任何值。我试图通过做这样的事情来过滤数组,onChange = (agency: string) => (    association: string[]  ) => {      const filteredData = test.filter(t =>        association.some(a => a === t.association && t.agency === agency)      );      console.log('Filtered Data: ', filteredData);}例如,在这种情况下 1 在这里,// agency = 'SOME AGENCY 2'// association = ['2433982101', '2102923701']这就是我在filteredData中得到的:Filtered Data:      [        {agency: "SOME AGENCY 2", id: "4", association: "2433982101"},        {agency: "SOME AGENCY 2", id: "5", association: "2433982101"},        {agency: "SOME AGENCY 2", id: "8", association: "2102923701"}      ]因此,在这里简单地说,我正在尝试从“测试”数组中删除任何未包含在特定机构的关联数组字符串中的项目,同时保持所有其他机构和关联数据原样,但我不确定如何准确得到这个。我尝试搜索相同的问题,但找不到与此类似的内容。如果之前已经回答过此类问题,我很抱歉,但如果有人可以帮助我,那就太好了。将尝试获取可重现的演示链接并在需要时对其进行编辑,以便很容易理解我在这里想要实现的目标。可重现的演示链接:https : //codesandbox.io/s/cool-resonance-drv0i我在这里真正想要的是仅从选定的复选框关联编号中显示表格中的数据,因此如果我从任何框中选择或取消选择,以前从其他框中选择/取消选择的数据不应该消失。
查看完整描述

2 回答

?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

如果您只想通过传入的关联数组进行过滤,则应该简单地进行:


const test = [

  {agency: 'SOME AGENCY 1', id: '1', association: '2433982101'},

  {agency: 'SOME AGENCY 1', id: '2', association: '2433982101'},

  {agency: 'SOME AGENCY 1', id: '3', association: '1917874801'},

  {agency: 'SOME AGENCY 2', id: '4', association: '2433982101'},

  {agency: 'SOME AGENCY 2', id: '5', association: '2433982101'},

  {agency: 'SOME AGENCY 2', id: '6', association: '1917874801'},

  {agency: 'SOME AGENCY 2', id: '7', association: '1917874801'},

  {agency: 'SOME AGENCY 2', id: '8', association: '2102923701'},

  {agency: 'SOME AGENCY 3', id: '9', association: '2433982101'},

  {agency: 'SOME AGENCY 3', id: '10', association: '2433982101'},

  {agency: 'SOME AGENCY 3', id: '11', association: '1917852501'}

];


  onChange = (agency: string) => (association: string[]) => {

      const filteredData = test.filter(t => 

        (agency === t.agency) ? association.includes(t.association) : t

      );

      console.log('Filtered Data: ', filteredData);

};


onChange('SOME AGENCY 2')(['2433982101', '2102923701']);

[{机构:'SOME AGENCY 1',id:'1',关联:'2433982101'},

{agency:'SOME AGENCY 1',id:'2',association:'2433982101'},

{agency:'SOME AGENCY 1', id: '3', association: '1917874801' },

{agency: 'SOME AGENCY 2', id: '4', association: '2433982101' },

{agency: 'SOME AGENCY 2', id: '5', association: '2433982101' },

{agency: 'SOME AGENCY 2', id: '8', association: '2102923701' },

{agency: 'SOME AGENCY 3', id: '9', association: '2433982101' },

{agency: 'SOME AGENCY 3', id: '10', association: '2433982101' },

{agency: 'SOME AGENCY 3', id:'11',关联:'1917852501' } ]


查看完整回答
反对 回复 2021-10-07
?
慕姐8265434

TA贡献1813条经验 获得超2个赞

要获得预期的过滤器行为,请删除t.agency === agencycrtiera 以仅包含在指定association列表中具有关联的项目:


const onChange = (agency: string) => (association: string[]) => {


  const filteredData = test.filter(t => association.some(a => a === t.association));

  console.log('Filtered Data: ', filteredData);

}


onChange('SOME AGENCY 2')(['2433982101', '2102923701'])

这是一个工作示例供您尝试


查看完整回答
反对 回复 2021-10-07
  • 2 回答
  • 0 关注
  • 125 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信