Sort by, then by on split aray

Another example using my favorite sorting algorithm.

by Gerald Fullam

HTML

<table id="t1"></table>

<table id="t2"></table>

CSS

html { font: normal 62.5% Arial, sans-serif; }
body { padding: 10px; }
table {
    font-size: 1.3em;
    margin-bottom: 18px;
    width: 50%;
    border: none;
    float: left;
}
table caption {
    font-weight: bold;
    font-size: 1.5rem;
}
table td {
    color: #333;
    padding: 9px;
    vertical-align: middle;
    text-align: left;
    line-height: 1em;
    border-bottom: 1px solid #bcbec0;
    font: normal 1.3em monospace;
}

JavaScript

/* "Sort by, then by"
// Based on this jsfiddle:
// http://jsfiddle.net/dFNva/1/
// as a response to this stackoverflow post:
// http://stackoverflow.com/a/979325/2502532
// Improvements include JSON deep access with path notation, 'then by' sorting.
// Description: Sort by object key, with optional reverse ordering, priming, and 'then by' sorting.

    array.sort(
        by(path[, reverse[, primer[, then]]])
    );
*/

/* THE FUNCTION */
var by = function (path, reverse, primer, then) {
    var get = function (obj, path) {
            if (path) {
                path = path.split('.');
                for (var i = 0, len = path.length - 1; i < len; i++) {
                    obj = obj[path[i]];
                };
                return obj[path[len]];
            }
            return obj;
        },
        prime = function (obj) {
            return primer ? primer(get(obj, path)) : get(obj, path);
        };
    
    return function (a, b) {
        var A = prime(a),
            B = prime(b);
        
        return (
            (A < B) ? -1 :
            (A > B) ?  1 :
            (typeof then === 'function') ? then(a, b) : 0
        ) * [1,-1][+!!reverse];
    };
};

/* THE ARRAY */
var arr = [
    "1951-1207",
    "1951-1324",
    "1951-1325",
    "1951-196",
    "1951-28",
    "1952-1068",
    "1952-1204",
    "1952-1224",
    "1952-397",
    "1952-69",
    "1952-748"
];

/* THE EXAMPLES */
/* Sort generic */
arr.sort();

// Output
var t1 = document.getElementById('t1');
t1.innerHTML += '<caption>Sort generic</caption>';
for (var i = 0; i < arr.length; i++) {
    t1.innerHTML += '<tr><td>' + arr[i] + '</td></tr>';
}

/* Sort by, then by */
arr.sort(
    by(null, false,
        function (x) {
            var y = x.split('-');
            return parseFloat(y[0]);
        },
        by(null, false,
            function (x) {
                var y = x.split('-');
                return parseFloat(y[1]);
            }
        )
    )
);

// Output
var t2 =...