首页 > 解决方案 > 根据特定属性过滤对象数组

问题描述

我有一组显示的列:

displayedColumns = ['CompanyName','Ticker', 'Id', 'Name', 'Date', 
      'Spot', 'PreviousTradeDate', 'PreviousSpot', 'FPrice', 'Status']

和一个对象数组(从 db 中检索,其中包含多个显示的列属性):

 data = [ {CompanyName = "..." Ticker = "..." other attributes........}
{.......} ]

我无法过滤data数组以仅显示displayed columns属性及其值(没有其他属性)

map()当我想过滤多个值时,不太明白如何使用函数

多谢

标签: javascriptarraysangulartypescript

解决方案


您可以仅使用所需键将数组映射到新对象。

var displayedColumns = ['CompanyName','Ticker', 'Id'],
    data = [{ CompanyName: 'ABC', Ticker: '123', Id: 1, x: 'foo' }, { CompanyName: 'ABD', Ticker: '124', Id: 2, x: 'bar' }];
    result = data.map(o => Object.assign(...displayedColumns.map(k => ({ [k]: o[k] }))));
    
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }


推荐阅读