嗨,下面是对象的JSON数组
[
{
"BookingId": 366024,
"BookingDetailId": 340708,
"JobCode" : 13
},
{
"BookingId": 366023,
"BookingDetailId": 340707,
"JobCode" : 12
},
{
"BookingId": 366022,
"BookingDetailId": 340706,
"JobCode" : 12
}
]
例如,要获取其中BookingId为Max且JobCode为12的特定数组对象。在上面的数组中,我想要对象{“ BookingId”:366023,“ BookingDetailId”:340707,“工作代码”:12},其BookingId为max,而JobCode为12。
如何在角度6中进行操作
尝试的代码
var a = this.GridSource.find(x => x.JobCode == 12 &&
x.BookingId == Math.max.apply(Math, this.GridSource.map
(function(o) { return o.BookingId; })));
您可以使用reduce来找到max元素,然后在find中使用它。
var max = array.reduce(function(prev, curr) {
return prev['BookingId'] > curr['BookingId'] ? prev : curr;
});
var elem = array.find(x => x['JobCode'] == 12 && x['BookingId'] == max['BookingId']);
您可以为此使用reduce。我在下面做了一个例子,希望对您有所帮助。如果没有符合条件的项目,则reduce的结果将为null
此外,请不要忘记类型:)
interface GridItem {
BookingId: number;
BookingDetailId: number;
JobCode: number;
}
const GridSource: GridItem[] = [
{
BookingId: 366024,
BookingDetailId: 340708,
JobCode: 13
},
{
BookingId: 366023,
BookingDetailId: 340707,
JobCode: 12
},
{
BookingId: 366022,
BookingDetailId: 340706,
JobCode: 12
}
];
const foundGridItem: GridItem = GridSource.reduce(
(result: GridItem, value: GridItem) =>
value.JobCode === 12 &&
(result === null || value.BookingId > result.BookingId)
? value
: result,
null
);