Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 保持有多少人观看某段视频的状态?_Javascript_Arrays - Fatal编程技术网

Javascript 保持有多少人观看某段视频的状态?

Javascript 保持有多少人观看某段视频的状态?,javascript,arrays,Javascript,Arrays,我想为视频制作一种热图。我有一个小页面,同一个视频播放两次。我已经有一种方法可以从单个视频中获得播放的部分,但现在我应该能够聚合数据,绘制一个图表,显示视频的哪个部分观看了一次、两次或根本没有观看 示例输出如下所示 played1 = [33,36][40,44][52,56]... played2 = [31,35][42,46][55,58]... 输出应该是31-33打了一次,33-35打了两次,35-36打了一次,36-40没有打 我正接近一个解决方案,但出现了一些问题,我不知道是什么

我想为视频制作一种热图。我有一个小页面,同一个视频播放两次。我已经有一种方法可以从单个视频中获得播放的部分,但现在我应该能够聚合数据,绘制一个图表,显示视频的哪个部分观看了一次、两次或根本没有观看

示例输出如下所示

played1 = [33,36][40,44][52,56]...
played2 = [31,35][42,46][55,58]...
输出应该是31-33打了一次,33-35打了两次,35-36打了一次,36-40没有打

我正接近一个解决方案,但出现了一些问题,我不知道是什么,这是我的代码:

function getPlayData(r,e){
var Played = 0;
var data = [];


if(r.played.length > 0){

    for(var i = 0; i < r.played.length; i ++){
        for(var j = 0; j < parseInt(r.duration); j ++ ){
            if(parseInt(r.played.start(i)) - j === 0){
                Played ++;
                data.push(j,Played);
            }
            else if(parseInt(r.played.end(i)) - j === 0){
                Played --;
                data.push(j,Played);
            }
        }
    }

    for(var i = 0; i < e.played.length; i ++){
        for(var k = 0; k < parseInt(e.duration); k ++){
            if(parseInt(e.played.start(i)) - k === 0){
                Played++;
                data.push(k,Played);
            }
            else if(parseInt(e.played.end(i)) - k === 0){
                Played--;
                data.push(k,Played);
            }
        }
    }
}
return data;
}
函数getPlayData(r,e){ var=0; var数据=[]; 如果(r.played.length>0){ for(变量i=0;i 这将返回一个带有时间戳的数组,以及当时有多少播放,但如果两个视频都从0开始,则只记录一个视图,并且行为总体上不一致。我还是一个初学者,如果我犯了一个明显的错误,非常抱歉,谢谢你给我的帮助


[编辑]我使用parseInt方法,因为它都是浮点数据,我读过很多关于浮点不精确的文章,所以我想让它与整数一起工作,然后再使它对浮点更精确

function getPlayData(r,e){
var Played = 0;
var data = [];


if(r.played.length > 0){

    for(var i = 0; i < r.played.length; i ++){
        for(var j = 0; j <= parseInt(r.duration); j ++ ){
            if(parseInt(r.played.start(i)) - j === 0){
                Played ++;
                data.push(j,Played);
            }
            if(parseInt(e.played.start(i)) - j === 0){
                Played++;
                data.push(j,Played);
            }
            if(parseInt(r.played.end(i)) - j === 0){
                Played --;
                data.push(j,Played);
            }
            if(parseInt(e.played.end(i)) - j === 0){
                Played--;
                data.push(j,Played);
            }
        }
    }
}
return data;
}
函数getPlayData(r,e){ var=0; var数据=[]; 如果(r.played.length>0){ for(变量i=0;i对于(var j=0;j我将代码更改为

function getPlayData(r,e){
var Played = 0;
var data = [];


if(r.played.length > 0){

    for(var i = 0; i < r.played.length; i ++){
        for(var j = 0; j <= parseInt(r.duration); j ++ ){
            if(parseInt(r.played.start(i)) - j === 0){
                Played ++;
                data.push(j,Played);
            }
            if(parseInt(e.played.start(i)) - j === 0){
                Played++;
                data.push(j,Played);
            }
            if(parseInt(r.played.end(i)) - j === 0){
                Played --;
                data.push(j,Played);
            }
            if(parseInt(e.played.end(i)) - j === 0){
                Played--;
                data.push(j,Played);
            }
        }
    }
}
return data;
}
函数getPlayData(r,e){ var=0; var数据=[]; 如果(r.played.length>0){ for(变量i=0;i对于(var j=0;j),您可以为两个变量
r
e
添加一些示例数据吗?r,e变量是加载了hls js的视频对象。如果转到此页面并单击“切换统计显示”您可以在底部看到这些变量中的内容扫描您为两个变量添加一些示例数据
r
e
?r,e变量是加载了hls js的视频对象。如果转到此页面并单击“切换统计显示”,您可以在底部看到这些变量中的内容