На рисунке матрица отраженная по диагонали.
Но все таки задание звучит как повернутая на 90 градусов по часовой, вот алгоритм:
//Исходные данные
var arr = ['1','2','3','4','5','6','7','8','9','10','11','12'];
var xlen = 4; //длина строки, или в повернутой матрице столбца
//Предварительные вычисления
var ylen = Math.ceil(arr.length / xlen); //Длина столбца
var matrix = new Array(xlen); //Строки результата
//Заполним строки массивами ячеек
for(var i = xlen; i--;) {
matrix[i] = new Array(ylen);
}
//я пробегаю массив в обратном порядке
//так как это более оптимально по скорости
for(var i = arr.length; i--;) {
//Вычислим координаты из i
var x = ylen - 1 - Math.floor(i / xlen);
var y = i % xlen;
//и заполним матрицу
matrix[y][x] = arr[i];
}