typescript配列ソートのカスタム優先ソート


typescript配列ソートのカスタム優先ソート
シーン:
var s1 = [a1,a2],
var s2 = [a4,a2,a1,a3]
s 1の順番で動的にs 2の順番を変えたい
結果:
s 2=[a 1,a 2,a 3,a 4]またはs 2=[a 1,a 2,a 4,a 3]
    private OrderSort(s2:Array) {
        var s1 =[2,1,8,9,3];
        var curr, index, result = [];
        for (var i = 0, len = s1.length; i < len; i++) {
            curr = s1[i];
            index = s2.indexOf(curr);
            if (index > -1) {
                s2.splice(index, 1);
                result.push(curr);
            }
        }
        return result.concat(s2);
    }