gpt4 book ai didi

javascript - 使用javascript合并数组中具有间隔属性的重叠对象

转载 作者:行者123 更新时间:2023-11-29 21:10:46 25 4
gpt4 key购买 nike

我发现了类似的问题,但批准的答案不适用于我的问题。

我有一个输入:范围对象数组,每个对象包含:

  • start :整数,范围开始,
  • end :整数,范围结束。

输出应该是:

非重叠范围对象的数组,覆盖与输入相同的范围,从最小开始到最大开始排序。如果满足以下条件,则两个范围不重叠:

  • range1.start <= range2.start ,和
  • range1.end >= range2.start

输入:

[
{ start: 8, end: 10 },
{ start: 5, end: 7 },
{ start: 9, end: 12 },
{ start: 2, end: 6 },
]

输出:

 [
{ start: 2, end: 7 },
{ start: 8, end: 12 }
]

正如我所提到的,我尝试在网络上应用解决方案来合并重叠间隔,但它们不起作用。

谢谢。

最佳答案

您可以按 startend 对数组进行排序,并迭代排序后的数组,检查范围是否重叠。

var data = [{ start: 8, end: 10 }, { start: 5, end: 7 }, { start: 9, end: 12 }, { start: 2, end: 6 }],
result = data
.sort(function (a, b) { return a.start - b.start || a.end - b.end; })
.reduce(function (r, a) {
var last = r[r.length - 1] || [];
if (last.start <= a.start && a.start <= last.end) {
if (last.end < a.end) {
last.end = a.end;
}
return r;
}
return r.concat(a);
}, []);

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

关于javascript - 使用javascript合并数组中具有间隔属性的重叠对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42001426/

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