首页 > 解决方案 > 如何返回具有最小值键的对象数组?

问题描述

我有一个对象数组,如下所示。如何返回包含bidAmount最小值的对象数组?

[
{userId:2,bidAmount:9200},
{userId:3,bidAmount:8500},
{userId:4,bidAmount:8100},
{userId:5,bidAmount:8100}
]

预期结果:

[
{userId:4,bidAmount:8100},
{userId:5,bidAmount:8100}
]

我尝试 Array.reduce 找到最小值,但它只返回一个对象

var min = result.reduce(function(res, obj) {
    return (obj.bidAmount < res.bidAmount) ? obj : res;
});
//Returns {userId: 4, bidAmount: 8100}

如何做到这一点?

标签: javascript

解决方案


您可以使用数组作为结果集来减少并检查bidAmount,如果它更小或相等。

const data = [{userId: 2, bidAmount: 9200}, {userId: 3, bidAmount: 8500}, {userId: 4, bidAmount: 8100}, {userId: 5, bidAmount: 8100}]
var minima = data.reduce((acc, el, index) => {
  if (!index || acc[0].bidAmount > el.bidAmount) return [el];
  if (acc[0].bidAmount === el.bidAmount) acc.push(el);
  return acc;
}, null);

console.log(minima);
.as-console-wrapper {
  max-height: 100% !important;
  top: 0;
}


推荐阅读