javascript array spiral

JavaScript
function(A){
        let retArray = [];
        let T = 0;
        let B = A.length - 1;
        let L = 0;
        let R = A[0].length - 1;
        let d = 0;
        
        while (T <= B && L <= R) {
            if (d === 0) {
                for (let i = L; i <= R; i++) {
                    retArray.push(A[T][i]);
                }
                T++;
                d = 1;
            } else if (d === 1) {
                for (let i = T; i <= B; i++) {
                    retArray.push(A[i][R]);
                }
                R--;
                d = 2;
            } else if (d === 2) {
                for (let i = R; i >= L; i--) {
                    retArray.push(A[B][i]);
                }
                B--;
                d = 3;
            } else if (d === 3) {
                for (let i = B; i >= T; i--) {
                    retArray.push(A[i][L]);
                }
                L++;
                d = 0;
            }
        }
        
        return retArray;
    }
Source

Also in JavaScript: