根据打字稿中另一个数组的值过滤数组

Posted

技术标签:

【中文标题】根据打字稿中另一个数组的值过滤数组【英文标题】:filter an array based on values of another array in typescript 【发布时间】:2022-01-22 00:02:28 【问题描述】:

如果我有一个如下所示的数组:

names: [
  value: 'recordedData',
  desc: 'Data'
 
  value: 'recordedNumbers',
  desc: 'numbers'
 
  value: 'recordedNames',
  desc: 'names'
]

另一个数组如下所示:

displayed: [
  value: 'data',
  desc: 'Data'
 
  value: 'numbers',
  desc: 'numbers'
]

我想根据第二个数组过滤第一个数组,所以我会得到以下结果数组:

DisplayedNames: [
  value: 'recordedData',
  desc: 'Data'
 
  value: 'recordedNumbers',
  desc: 'numbers'
]

【问题讨论】:

这能回答你的问题吗? Filter array of objects with another array of objects 不,我已经检查了答案,但没有一个是打字稿,而且大多数都不起作用 names.filter(el => displayed.some(f => f.desc === el.desc)) 没有达到您的预期? (另外,TypeScript 是 javascript 的超集。JavaScript 解决方案在 TypeScript 中应该可以正常工作,并且这里几乎没有 TS 可以添加。) 【参考方案1】:

使用Array.prototype.filter()Array.prototype.some() 是实现此目的的一种优雅方式

const names = [value: 'recordedData', desc: 'Data',
 value: 'recordedNumbers', desc: 'numbers',
 value: 'recordedNames', desc: 'names'];
 
const displayed = [
  value: 'data',
  desc: 'Data'
, 
  value: 'numbers',
  desc: 'numbers'
]

 const result = names.filter(x => displayed.some(y => y.desc === x.desc));
 
 console.log(result);

更多关于Array.prototype.some() - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some 更多关于Array.prototype.filter() - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

【讨论】:

以上是关于根据打字稿中另一个数组的值过滤数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在打字稿中显示从数组中过滤的对象列表?

更新可观察打字稿中的数组值

在打字稿中向对象数组插入新值

根据打字稿中的请求参数设置猫鼬的查询过滤器

无法将数组分配给打字稿中的另一个数组

如何在打字稿中定义一个常量数组