Array.transpose()

出来てない

JavaScript

Array.prototype.transpose || (Array.prototype.transpose = function() {
    if (!this.length) {
        return [];
    }

    if (this[0] instanceof Array) {
        var tlen = this.length,
            dlen = this[0].length,
            newA = new Array(dlen);
    } else {
        throw new Error("二次元配列をクレ!(・∀・)");
    }

    for (var i = tlen; i--;) {
        if (this[i].length !== dlen) throw new Error("Index Error! 不揃いな林檎たち(・∀・)");
    }

    for (var i = 0; i < dlen; ++i) {
        newA[i] = [];
        for (var j = 0, l = tlen; j < l; j++) {
            newA[i][j] = this[j][i];
        }
    }

    return newA;
});



var a = [
    [1, 2, 3],
    [4, 5, 6]
    ];

//alert(a instanceof Array);//true
var at = a.transpose();
document.write(
at.length + "<br />" + at.length + "<br />" + at.length + "<br />" + (at instanceof Array) + "<br />" + typeof at + "<hr />");

for (var k = 0, m = at.length; k < m; ++k) {
    document.write(at[k] + "<br />");
}


/*正解*/
/*
  1, 4
  2, 5
  3, 6
*/