gpt4 book ai didi

javascript - Lodash 获取在唯一 id 下具有最低值的项目

转载 作者:行者123 更新时间:2023-11-30 08:23:34 24 4
gpt4 key购买 nike

我有一组代表一组旅游的对象,但同一个旅游有不同的价格,如下所示:

let tours = [{'id':1, price:200},
{'id':1, price:300},
{'id':3, price:150},
{'id':2, price:110},
{'id':3, price:120},
{'id':2, price:100}]

因此,我想选择旅游 ID 提供的最低价格,并将其作为价格最低的唯一旅游插入新数组。所以结果是:

result = [{'id':1, price:200},
{'id':3, price:120},
{'id':2, price:100},]

我尝试了 Lodash 中的方法,例如 _.minBy(),但它从所有数组中返回一个。

最佳答案

Lodash 解决方案

您可以 _.groupBy() ID,比 _.map()结果,并取每组中最低的 _.minBy() :

const tours = [{"id":1,"price":200, prop: 'prop1' },{"id":1,"price":300, prop: 'prop1'},{"id":3,"price":150},{"id":2,"price":110},{"id":3,"price":120},{"id":2,"price":100}];

const result = _(tours)
.groupBy('id')
.map((group) => _.minBy(group, 'price'))
.value();

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"></script>

VanillaJS 解决方案

Reduce 游览 Map以 id 作为键。在每次迭代中,选择价格最低的组。完成后,spread Map.values()返回数组:

const tours = [{"id":1,"price":200, prop: 'prop1' },{"id":1,"price":300, prop: 'prop1'},{"id":3,"price":150},{"id":2,"price":110},{"id":3,"price":120},{"id":2,"price":100}];

const lowest = [...tours.reduce((r, o) => {
const { id, price } = o;
const current = r.get(id);

if(!current || price < current.price) r.set(id, { ...o });

return r;
}, new Map()).values()];

console.log(lowest);

关于javascript - Lodash 获取在唯一 id 下具有最低值的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49586087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com