我有以下物品清单:
var data = [
{
"AcctId": 100,
"Value": true
},
{
"AcctId": 200,
"Value": false
}
]
我想像这样选择不同的帐户:
Output: [100, 200]
我尝试过使用角度过滤器方法:
var newData = data.filter(r => r.AcctId);
但是,它返回与输入相同的列表。谁能告诉我我做错了什么?
你可以使用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));
或者洛达斯的方式:
lodash.uniq(this.data.map(x => x.acctId));
试着这样做:
工作演示
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和持久属性? 如果我将它们添加到组中,就像,那么我的结果就会混乱。 我可以使用获得其他属性,如,但这些属性不是计算值。 数据示例: 希望将结果按如下方式分组:
假设我有一个名为House的对象,它包含一个列表 对于房间,只有一个属性,其值由int表示: 现在,使用Java8,并给出一个带有