找到具有条件的对象数组的最小值
Find the minimum value of array of object with conditions
let event = [
{
"vendorBidId": 58,
"participantName": "bro.gee@test.in",
"bidAmount": 10000,
"productionRate": 10000,
"bidTime": "2021-10-21T14:55:05.957324",
"isYou": false,
"awarded": false
},
{
"vendorBidId": 57,
"participantName": "test@gmail.com",
"bidAmount": 20000,
"productionRate": 20000,
"bidTime": "2021-10-21T14:50:24.493522",
"isYou": false,
"awarded": true
},
{
"vendorBidId": null,
"participantName": "bro+2@test.com",
"bidAmount": 0,
"productionRate": null,
"bidTime": null,
"isYou": false,
"awarded": false
},
{
"vendorBidId": null,
"participantName": "bro.hey@test.com",
"bidAmount": 0,
"productionRate": null,
"bidTime": null,
"isYou": true,
"awarded": false
}
]
这里我想找到最低出价金额,但是在检查了以下条件后,
- 如果 vendorBidId 为空则跳过
我试过这样做。
let minimum = event.reduce(function(prev, curr) {
return prev.bidAmount < curr.bidAmount ? prev : curr;
});
但是,我也尝试添加我的条件。但是效果不是很好
我只想要最低 bidAmount(如果 vendorBidId 为空则跳过)。
Math.min 在过滤器和地图上
let event = [{ "vendorBidId": 58, "participantName": "bro.gee@test.in", "bidAmount": 10000, "productionRate": 10000, "bidTime": "2021-10-21T14:55:05.957324", "isYou": false, "awarded": false }, { "vendorBidId": 57, "participantName": "test@gmail.com", "bidAmount": 20000, "productionRate": 20000, "bidTime": "2021-10-21T14:50:24.493522", "isYou": false, "awarded": true }, { "vendorBidId": null, "participantName": "bro+2@test.com", "bidAmount": 0, "productionRate": null, "bidTime": null, "isYou": false, "awarded": false }, { "vendorBidId": null, "participantName": "bro.hey@test.com", "bidAmount": 0, "productionRate": null, "bidTime": null, "isYou": true, "awarded": false } ]
const min = Math.min(...event
.filter(evt => evt.vendorBidId)
.map(({bidAmount}) => bidAmount)
);
console.log(min)
使用 reduce
是一种简单的方法(如果您想要整个对象)。
如果您只需要最小值,可以在映射 minAmount 键值后使用 Math.min
。
let event = [
{
"vendorBidId": 58,
"participantName": "bro.gee@test.in",
"bidAmount": 10000,
"productionRate": 10000,
"bidTime": "2021-10-21T14:55:05.957324",
"isYou": false,
"awarded": false
},
{
"vendorBidId": 57,
"participantName": "test@gmail.com",
"bidAmount": 20000,
"productionRate": 20000,
"bidTime": "2021-10-21T14:50:24.493522",
"isYou": false,
"awarded": true
},
{
"vendorBidId": null,
"participantName": "bro+2@test.com",
"bidAmount": 0,
"productionRate": null,
"bidTime": null,
"isYou": false,
"awarded": false
},
{
"vendorBidId": null,
"participantName": "bro.hey@test.com",
"bidAmount": 0,
"productionRate": null,
"bidTime": null,
"isYou": true,
"awarded": false
}
]
const min = event.reduce(function(prev, curr) {
return prev.bidAmount < curr.bidAmount && curr.vendorBidId ? prev : curr;
});
console.log(min);
var minValue = Math.min(...event.map(item => item.vendorBidId ? item.bidAmount : 0));
console.log(minValue);
let event = [
{
"vendorBidId": 58,
"participantName": "bro.gee@test.in",
"bidAmount": 10000,
"productionRate": 10000,
"bidTime": "2021-10-21T14:55:05.957324",
"isYou": false,
"awarded": false
},
{
"vendorBidId": 57,
"participantName": "test@gmail.com",
"bidAmount": 20000,
"productionRate": 20000,
"bidTime": "2021-10-21T14:50:24.493522",
"isYou": false,
"awarded": true
},
{
"vendorBidId": null,
"participantName": "bro+2@test.com",
"bidAmount": 0,
"productionRate": null,
"bidTime": null,
"isYou": false,
"awarded": false
},
{
"vendorBidId": null,
"participantName": "bro.hey@test.com",
"bidAmount": 0,
"productionRate": null,
"bidTime": null,
"isYou": true,
"awarded": false
}
]
这里我想找到最低出价金额,但是在检查了以下条件后,
- 如果 vendorBidId 为空则跳过
我试过这样做。
let minimum = event.reduce(function(prev, curr) {
return prev.bidAmount < curr.bidAmount ? prev : curr;
});
但是,我也尝试添加我的条件。但是效果不是很好
我只想要最低 bidAmount(如果 vendorBidId 为空则跳过)。
Math.min 在过滤器和地图上
let event = [{ "vendorBidId": 58, "participantName": "bro.gee@test.in", "bidAmount": 10000, "productionRate": 10000, "bidTime": "2021-10-21T14:55:05.957324", "isYou": false, "awarded": false }, { "vendorBidId": 57, "participantName": "test@gmail.com", "bidAmount": 20000, "productionRate": 20000, "bidTime": "2021-10-21T14:50:24.493522", "isYou": false, "awarded": true }, { "vendorBidId": null, "participantName": "bro+2@test.com", "bidAmount": 0, "productionRate": null, "bidTime": null, "isYou": false, "awarded": false }, { "vendorBidId": null, "participantName": "bro.hey@test.com", "bidAmount": 0, "productionRate": null, "bidTime": null, "isYou": true, "awarded": false } ]
const min = Math.min(...event
.filter(evt => evt.vendorBidId)
.map(({bidAmount}) => bidAmount)
);
console.log(min)
使用 reduce
是一种简单的方法(如果您想要整个对象)。
如果您只需要最小值,可以在映射 minAmount 键值后使用 Math.min
。
let event = [
{
"vendorBidId": 58,
"participantName": "bro.gee@test.in",
"bidAmount": 10000,
"productionRate": 10000,
"bidTime": "2021-10-21T14:55:05.957324",
"isYou": false,
"awarded": false
},
{
"vendorBidId": 57,
"participantName": "test@gmail.com",
"bidAmount": 20000,
"productionRate": 20000,
"bidTime": "2021-10-21T14:50:24.493522",
"isYou": false,
"awarded": true
},
{
"vendorBidId": null,
"participantName": "bro+2@test.com",
"bidAmount": 0,
"productionRate": null,
"bidTime": null,
"isYou": false,
"awarded": false
},
{
"vendorBidId": null,
"participantName": "bro.hey@test.com",
"bidAmount": 0,
"productionRate": null,
"bidTime": null,
"isYou": true,
"awarded": false
}
]
const min = event.reduce(function(prev, curr) {
return prev.bidAmount < curr.bidAmount && curr.vendorBidId ? prev : curr;
});
console.log(min);
var minValue = Math.min(...event.map(item => item.vendorBidId ? item.bidAmount : 0));
console.log(minValue);