使用 maxBy 获取具有相同值的对象



我有这个数组:

const obj = [
{
value: 1,
position: 1,
id: 333,
},
{
value: 1,
position: 2,
id: 222,
},
];

我正在使用 lodash 中的 maxBy 来获取名为value的属性的最大值。

_.maxBy(obj, "value");

所以,问题是有两个对象具有相同的属性,maxBy向我展示了最后一个对象。在这种情况下,我需要同时使用maxBy,将较小的值引用到位置属性。

有什么帮助吗?

_.maxBy接受iteratee作为第二个参数,我们可以自定义iteratee。您当前的方式是使用_.property迭代速记。

适合您案例的解决方案:

const arr = [
{
value: 1,
position: 1,
id: 333,
},
{
value: 1,
position: 2,
id: 222,
},
];
const result = _.maxBy(arr, (i) => {
const isDuplicate = _.filter(arr, (o) => o.value === i.value).length;
return i.value - (isDuplicate ? i.position : 0); // get max value of (i.value - i.position) when we get duplicate case.
});
console.log(result);

在您的情况下,要获得(i.value - i.position)的最大值,我们需要最大值value和最小值position

相关内容

  • 没有找到相关文章

最新更新