если нужно сохранить исходный массив
var a = [
[1, 2, 3, 4],
[12, 0, 0, 5],
[11, 0, 0, 6],
[10, 9, 8, 7]
], o = a[0].slice(0), v = [];
for(var i=0, m = a.slice(1, -1); i<m.length; i++) {
o.push(m[i].slice(0).pop());
v.push(m[m.length-1-i][0])
}
o = o.concat(a.slice(0).pop().slice(0).reverse(), v);
alert(o);