gpt4 book ai didi

javascript - 使用 lodash 从数组中过滤冗余对象

转载 作者:数据小太阳 更新时间:2023-10-29 03:51:51 25 4
gpt4 key购买 nike

数据

var ranges = [
{ start: 2, end: 5 },
{ start: 8, end: 12 },
{ start: 15, end: 20 },
{ start: 9, end: 11 },
{ start: 2, end: 6 }
];

每个对象代表一个范围。我需要删除包含在另一个范围内的范围。也就是说,在两个冗余对象之间我需要保持更长的范围

我写了这段代码,但我想知道是否有更好的方法使用 lodash 来实现。

var Range = {
contains: function(r1, r2) {
return r2.start >= r1.start && r2.end <= r1.end;
}
};

var result = _.chain(ranges)
.filter(function(r2) {
return !_.some(ranges, function(r1) {
return r1 != r2 && Range.contains(r1, r2);
});
})
.value();

console.log(result);

输出

[
{ start: 8, end: 12 },
{ start: 15, end: 20 },
{ start: 2, end: 6 }
]

最佳答案

我终于找到了一种使用 uniqWith 实现此目的的简单方法.

var result = _.chain(ranges)
.orderBy(['end'], ['desc'])
.uniqWith(function(r1, r2) {
return Range.contains(r2, r1);
})
.value();

关于javascript - 使用 lodash 从数组中过滤冗余对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39043089/

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