JSFiddle - React, Tailwind, and code Playground

by danbeam

JavaScript

function print(mtx) {
    function nl(rows) { return rows.join('\n'); }
    function sp(row) { return row.join(' '); }
    console.log(
        nl([
            sp(mtx[0]),
            sp(mtx[1]),
            sp(mtx[2]),
            sp(mtx[3])
        ])
    );
}

function zeroRowsAndCols(mtx) {
    var rows = {}, cols = {};
    for (var i = 0; i < mtx.length; ++i) {
        for (var j = 0; j < mtx[i].length; ++j) {
            if (i in rows || j in cols)
                continue;
            if (mtx[i][j] == 0) {
                rows[i] = true;
                cols[j] = true;
            }
        }
    }
    for (var row in rows) {
        for (var i = 0; i < mtx[row].length; ++i) {
            mtx[row][i] = 0;
        }
    }
    for (var col in cols) {
        for (var i = 0; i < mtx.length; ++i) {
            if (i in rows)
                continue;
            mtx[i][col] = 0;
        }
    }
}

var mtx = [ [ 1,  2,  3,  4 ],
            [  5,  6,  0,  8 ],
            [  9,  0, 11, 12 ],
            [ 13, 14, 15, 16 ] ];

print(mtx);
zeroRowsAndCols(mtx);
print(mtx);