【发布时间】:2018-04-12 17:17:53
【问题描述】:
我有一种情况,我需要计算用户播放视频的唯一秒数。我得到一个数组playbackArray,在其中我得到用户开始播放视频的位置(beginPosition)和用户停止播放视频的位置(endPosition)。
我有一个这样的数组:
let playbackArray = [
{
beginPosition: 0,
endPosition: 30, // endPosition - beginPosition = 30
blockNum: 0
},
{
beginPosition: 45,
endPosition: 65, // endPosition - beginPosition = 20
blockNum: 1
},
{
beginPosition: 55,
endPosition: 85, // endPosition - beginPosition = 30
// but only 20 new seconds (65s - 85s) so total video playback is 30 + 20 + 20 = 70s.
blockNum: 2
}
]
基本上,如果数组中的块中有重叠时间,我 必须删除那些重叠的时间间隔并只计算 此数组中的唯一时间。
我看到的一种方法是以某种方式在这个数组上运行一个循环并遍历每个块并将当前块的 beginPosition 与前一个块的 endPosition 和
- 如果没有重叠,则将此差异添加到另一个数组中。
- 如果有重叠,则将当前块的 beginPosition 与之前所有块的 beginPosition 进行比较,并尝试将差值扣除到此数组中。
【问题讨论】:
-
到目前为止你有什么尝试?
-
又该如何选择生成的
blockNums? -
@ScottSauyet,blockNums 可以任意选择。
-
暴力破解方法是使用所有观看秒数的集合。没有逻辑,保证独一无二。 :)
-
@HollyLeaves:我想你误解了这个问题。
标签: javascript arrays algorithm logic