javascript使用reduce功能

Him*_*wal 3 javascript ecma

我有下面的数组

 ["0,5,p1", "24,29,p2", "78,83,p2", "78,83,p3", "162,167,p2" ] 
Run Code Online (Sandbox Code Playgroud)

我想输出为["5,p1","10,p2","5,p3"],所以p1..3是视频文件支付时间与开始和结束时间.0,5意味着p1轮廓播放5秒,依此类推.我想知道使用ECMA脚本映射总共需要什么时间的配置文件,减少功能.这是我尝试但它不起作用:

 var ca =   uniqueArray.reduce(function(pval, elem) {
    var spl = elem.split(',');
            var difference = Math.round(spl[1] - spl[0]);
            return difference;
    },elem.split(',')[3]);
Run Code Online (Sandbox Code Playgroud)

Jam*_*iec 6

我不认为它可以一次完成,但我可能是错的.我要走两步......

  1. 减少数组以获得pX值的唯一映射
  2. 将结果映射回所需格式的数组

var input = ["0,5,p1", "24,29,p2", "78,83,p2", "78,83,p3", "162,167,p2" ] 

var step1 = input.reduce(function(p,c){
    var parts = c.split(",");
    if(!p[parts[2]])
       p[parts[2]] = 0;
    p[parts[2]] += parseInt(parts[1],10) - parseInt(parts[0],10);
    return p;
},{});

var result = Object.keys(step1).map(function(e){
    return step1[e] + "," + e;
});

console.log(result);
Run Code Online (Sandbox Code Playgroud)