Вроде вот так можно, но не уверен
arr1=[1,2,30,4,5]
arr2=[9,80,1,2,30]
extract=function(oldArr, newArr){
var i=0, ns="", oldArr=oldArr.join(), newArr=newArr.join()
while(!new RegExp("^"+newArr.slice(i)).test(oldArr)) {ns+=newArr[i]; i++}
return ns.split(",").filter(function(x){return x!==""})
}
alert(extract(arr1, arr2))
//>>>> [ '9', '80' ]
Вообще, по-моему, задача в общем случае, неразрешима. Неизвестно, какие данные придут в новый массив, они могут в любом подмножестве совпадать с исходными. Поэтому нет надежного шаблона для проверки.