根据打字稿中另一个数组的值过滤数组
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
【讨论】:
以上是关于根据打字稿中另一个数组的值过滤数组的主要内容,如果未能解决你的问题,请参考以下文章