There is probably a more elegant way to do this, but this will do the job for you (jsfiddle demo):
filesArray = [1195, 1201, 1202, 1203, 1205, 1001, 1002, 1004];
filesArray.sort();
var arrayLength = filesArray.length;
var lastFrame = filesArray[arrayLength - 1];
var firstFrame = filesArray[0];
var loopLength = lastFrame - firstFrame;
var missingArrayIndex = 0;
var missingFrames = new Array();
var missingFramesString = "";
for (var i = 0; i <= loopLength; i++) {
currentFrame = firstFrame + i;
console.log("currentFrame is "+(currentFrame)+" and last frame was "+missingFrames[missingArrayIndex-1]);
if (!isInArray(currentFrame, filesArray))
{
missingFrames[missingArrayIndex] = currentFrame;
// if the currentFrame is not the last missingFrame+1, then it is new sequence
if( currentFrame !== missingFrames[missingArrayIndex-1]+1)
{
missingFramesString = missingFramesString + currentFrame;
}
missingArrayIndex++;
// if not a missing frame and the currentFrame-1 was a missingFrame then it is last of sequence
} else if( currentFrame == missingFrames[missingArrayIndex-1] +1 ) {
if (missingFramesString.indexOf(missingFrames[missingArrayIndex-1]) >= 0)
missingFramesString = missingFramesString + ",";
else missingFramesString = missingFramesString + "-" + missingFrames[missingArrayIndex-1] + ",";
}
}
// remove last comma
missingFramesString = missingFramesString.replace(/,\s*$/, "");
$('body').html("Missing Frames = " + missingFramesString);
function isInArray(value, array) {
return array.indexOf(value) > -1;
}