首页 > 解决方案 > 查找具有条件的对象数组的最小值

问题描述

    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
    }
]

在这里我想找到最低的bidAmount,但是在检查了以下条件之后,

  1. 如果 vendorBidId 为空则跳过

我试着这样做。

let minimum = event.reduce(function(prev, curr) {
    return prev.bidAmount < curr.bidAmount ? prev : curr;
});

但是并试图添加我的条件。但是效果不好。

我只想要最低的bidAmount(跳过vendorBidId 为空)。

标签: javascriptarraysobjectreduce

解决方案


过滤器和地图上的 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)


推荐阅读