javascript - 在范围数组中查找重叠并构建具有新分块范围的新数组

标签 javascript ruby arrays range

理想情况下,我想要一个使用 Ruby 或 Javascript 的解决方案。在 javascript 中使用数组而不是范围就可以了。

我想要这样的输入:

    [0..301, 230..268, 242..364, 574..579, 587..593]

    [0,301, 230,268, 242,364, 574,579, 587,593]

然后把它变成类似这样的东西:

    [0..230, 230..242, 242..268, 268..301, 301..364, 574..579, 587..593]

    [[0,230], [230,242, [242,268], [268,301], [301,364], [574,579, [587,593]]

任何帮助都会很棒。这种帮助但不完全是因为它提供了完整范围而不是分块范围,How do I summarize array of integers as an array of ranges? .

最佳答案

这是一个 ruby 解决方案:

ranges = [0..301, 230..268, 242..364, 574..579, 587..593]
endpoints = ranges.map{|r| [r.first, r.last]}.flatten.sort
values = ranges.map{|r| r.to_a}.reduce(:+)

new_ranges = []
endpoints.reduce do |x, y|
    r = Range.new(x,y);
    new_ranges << r if r.all?{|v| values.include? v}
    y
end

puts new_ranges

#0..230
#230..242
#242..268
#268..301
#301..364
#574..579
#587..593

关于javascript - 在范围数组中查找重叠并构建具有新分块范围的新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9058851/

相关文章:

javascript - 依赖任务的 gulp 错误处理

javascript - 将 JavaScript 计时器函数转换为使用异步调用

ruby - Ruby 中的哈希数组 - 删除不需要的

arrays - 查找总和为 0 的数组的所有子集

javascript - 动态更新和 AngularJS

ruby - 简单的 Ruby SFTP 示例语法错误

ruby-on-rails - 在 Rails 中添加可为空的外键

javascript - 在javascript中对混合服装尺寸的数组进行排序

python - Mongodb python 语法获取数组值。

javascript - 解析 xhr.responseText | GTM 数据层推送