首页 > 解决方案 > 删除具有各种属性的对象数组中的重复项

问题描述

我有一组具有一些属性的对象。如果 cod 和 art 已经存在于数组中,我想删除重复的。

我为此创建了一个函数,但我的结果是错误的......我有 2 行而不是 3 行。

谁能帮我?

演示

.TS

 data = [
    {
      cod: 1.13,
      art: 'BCC'
    },
    {
      cod: 1.13,
      art: 'BCC'
    },
    {
      cod: 1.13,
      art: 'BCC'
    },
    {
      cod: 1.14,
      art: 'BCC'
    },
    {
      cod: 1.14,
      art: 'BCC'
    },
    {
      cod: 1.13,
      art: 'AAA'
    },
    {
      cod: 1.13,
      art: 'AAA'
    }
  ];

  ngOnInit() {
    var filtered = this.data.filter(function(el) {
      if (!this[el.cod && el.art]) {
        this[el.cod && el.art] = true;
        return true;
      }
      return false;
    }, Object.create(null));
    console.log(filtered);
  }

  //Expected Output

  // data = [
  //   {
  //     cod: 1.13,
  //     art: 'BCC'
  //   },

  //   {
  //     cod: 1.14,
  //     art: 'BCC'
  //   },
  //   {
  //     cod: 1.13,
  //     art: 'AAA'
  //   }
  // ];

标签: javascripttypescript

解决方案


您可以使用地图来实现您的目标

ngOnInit() {
    let map = new Map();

    this.data.forEach(eachItem => map.set(eachItem.cod + '-' + eachItem.art, eachItem));

    console.log('unique items:', Array.from(map.values()));
}

推荐阅读