首页 > 解决方案 > 过滤数组属性打字稿

问题描述

我有 2 个array

  items = [
    {
      offenceType:"7",
      offenceCode:"JLN14",
    }, 
    {
      offenceType:"48",
      offenceCode:"JLN14",
    }
  ];



  demo = [
    {
      offenceCode: 'JLN14',
      offenceType: '7',
      offenceDesc: 'emergency lane abuse'
    },
    {
      offenceCode: 'JLN14',
      offenceType: '48',
      offenceDesc: 'speeding'
    },
    {
      offenceCode: 'JLN13',
      offenceType: '52',
      offenceDesc: 'parking abuse'
    }
  ];

我如何过滤这 2 之间的一些属性,array例如:在gotitems中,offenceType所以我需要OffenceCode将它与 which containsdemo进行比较:offenceTypeoffenceCodeoffenceDescoffenceTypeoffenceCodeoffenceDescdemo

  newArray = [];

  // create new array to map 2 objects
  this.items.forEach(x => {
    this.newArray.push(x.offenceCode, x.offenceType);
    console.log('newArray',this.newArray);
    // doing filter
  })

这是我的stackblitz 演示

以前我曾问过类似这个上一个问题的问题,但即使尝试了很多次如何解决这个问题我也无法弄清楚,我是编码新手,希望任何人都可以就如何解决这个问题提出建议

标签: javascriptangulartypescript

解决方案


你可以使用地图

const items = [
  {
    offenceType:"7",
    offenceCode:"JLN14",
  }, 
  {
    offenceType:"48",
    offenceCode:"JLN14",
  }
];

const demo = [
  {
    offenceCode: 'JLN14',
    offenceType: '7',
    offenceDesc: 'emergency lane abuse'
  },
  {
    offenceCode: 'JLN14',
    offenceType: '48',
    offenceDesc: 'speeding'
  },
  {
    offenceCode: 'JLN13',
    offenceType: '52',
    offenceDesc: 'parking abuse'
  }
];

const newArray = items.map(item => {
   const lookup = demo.find(i => item.offenceType === i.offenceType);
   return {
     offenceType: lookup.offenceType,
     offenceCode: lookup.offenceCode,
     offenceDesc: lookup.offenceDesc
   }
});

console.log(newArray);


推荐阅读