当前位置: 首页 > 知识库问答 >
问题:

如何在Angular[重复]中选择对象列表的不同属性值

郎雪风
2023-03-14

我有以下物品清单:

var data = [
    {
        "AcctId": 100,
        "Value": true
    },
    {
        "AcctId": 200,
        "Value": false
    }
]

我想像这样选择不同的帐户:

Output: [100, 200]

我尝试过使用角度过滤器方法:

var newData = data.filter(r => r.AcctId);

但是,它返回与输入相同的列表。谁能告诉我我做错了什么?

共有3个答案

倪德业
2023-03-14

你可以使用rxjs库

import { of } from 'rxjs';
import { distinct } from 'rxjs/operators';

interface Person {
age: number,
name: string
}

of<Person>(
    { age: 4, name: 'Foo'},
    { age: 7, name: 'Bar'},
    { age: 5, name: 'Foo'},
).pipe(
    distinct((p: Person) => p.name),
)
.subscribe(x => console.log(x));
彭胡媚
2023-03-14

或者洛达斯的方式:

lodash.uniq(this.data.map(x => x.acctId));
彭令秋
2023-03-14

试着这样做:

工作演示

this.result = Array.from(new Set(this.data.map(x => x.acctId)));

 constructor() {
    this.result = this.GetDistinctValues(this.data, "acctId").map(x => x.acctId);
  }

  GetDistinctValues(Source: Array<any>, FilterKey: string = null): Array<any> {
    let DistinctArray = [];
    try {
      Source.forEach(e => {
        if (FilterKey !== null && FilterKey !== undefined && FilterKey !== "") {
          if (
            DistinctArray.filter(DE => DE[FilterKey] === e[FilterKey]).length <=
            0
          )
            DistinctArray.push(e);
        } else {
          if (DistinctArray.indexOf(e) === -1) DistinctArray.push(e);
        }
      });
    } catch (error) {
      DistinctArray = [];
    }
    return DistinctArray;
  }

演示2

 类似资料:
  • 我有一份包含订单项目列表的订单 如果在这个列表中我有以下项目 我想计算订单所有者名称相同的值之和。 e、 g.如果所有者名称为“John”,则返回417.00,如果名称为“Doe”,则返回19.00。 我怎么能通过小溪Java呢?非常感谢

  • 我的DB返回给我一个重复的java对象列表,其中只有一个属性不同,即course。例如,针对1个学生:针对2个不同课程的2个学生对象。我创建了一个模型类,我想在其中填充来自DB的student对象。对于model class中的课程,我已经创建了字符串列表。

  • 从对象中检索出给定选择器指定的一组属性。 对每个选择器使用 Array.map() ,使用 String.split('.') 来分割每个选择器,并使用 Array.reduce() 来获取它所指示的值。 const select = (from, ...selectors) => [...selectors].map(s => s.split('.').reduce((prev, cur)

  • 例如,我的列表包含{4,6,6,7,7,8},我想要最终结果= {6,6,7,7} 一种方法是遍历列表并消除唯一值(本例中为4,8)。 除了在列表中循环之外,还有其他有效的方法吗?我问这个问题是因为我正在工作的列表非常大?我的密码是

  • 我正在尝试选择一些不在我的中的属性。这可能吗? 如何从中获取CatId和持久属性? 如果我将它们添加到组中,就像,那么我的结果就会混乱。 我可以使用获得其他属性,如,但这些属性不是计算值。 数据示例: 希望将结果按如下方式分组:

  • 给定一个对象 我可以定义一个新对象,其字段取决于s的内容, 说些像 然后字段d的值取决于s.a(d的值取决于是否定义了s.a)。 如何根据s的值排除对象中的字段,类似于 但这不起作用。。。 我知道这可以通过两个if来实现,但我正在寻找一个优雅的解决方案 我的物体非常大,所以我不想做类似的事情 编辑我看到了各种各样的解决方案,我正在寻找一种单一/变化最小且可读的解决方案。类似于惯用javascrip