根据另一个数组中的true或false集映射一个数组

时间:2019-10-24 09:08:17

标签: javascript typescript

我有一个数组项“ mockData”和一个过滤器数组“ filter”(角度8):

filter=[
{column:"name",show:true},
{column:"Sex",show:false},
];

mockData=[
{name:"test",sex:"m"},
{name:"test2",sex:"m"},
{name:"test3",sex:"f"},
{name:"test4",sex:"f"},
];

我只想映射在过滤器数组中设置为true的嘲笑数据的列。

结果应如下所示。

[
{name:"test"},
{name:"test2"},
{name:"test3"},
{name:"test4"},
]

应强制检入过滤器。

1 个答案:

答案 0 :(得分:1)

const filter = [
  {
    column: "name",
    show: true
  },
  {
    column: "sex",
    show: false
  }
];

const mockData = [
  {
    name: "test",
    sex: "m"
  },
  {
    name: "test2",
    sex: "m"
  },
  {
    name: "test3",
    sex: "f"
  },
  {
    name: "test4",
    sex: "f"
  }
];

const filteredMockData = mockData.map(data =>
  Object.entries(data).reduce(
    (result, [key, value]) =>
      filter.find(f => f.column === key && f.show)
        ? { ...result, [key]: value }
        : result,
    {}
  )
);

console.log(filteredMockData);