【问题标题】: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'
}]

【问题讨论】:

  • 不,我已经检查了答案,但没有一个是打字稿,而且大多数都不起作用
  • names.filter(el => displayed.some(f => f.desc === el.desc)) 没有达到您的预期? (另外,TypeScript 是 JavaScript 的超集。JavaScript 解决方案在 TypeScript 中应该可以正常工作,并且这里几乎没有 TS 可以添加。)

标签: javascript arrays typescript object


【解决方案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

【讨论】:

    猜你喜欢
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    • 2014-05-03
    • 2022-08-11
    • 1970-01-01
    相关资源
    最近更新 更多