function matrixClone(matrix, defaultValue) { return matrix.map(row => { return defaultValue === undefined ? row.slice(0) : Array(row.length).fill(defaultValue); }); } const deepEqual = require('./deepEqual'); // Test clone. const a = [[1, 2], [1, 4]]; console.log(deepEqual(matrixClone(a), [[1, 2], [1, 4]])); a[0][0] = 4; console.log(deepEqual(matrixClone(a), [[1, 2], [1, 4]]) === false); console.log(deepEqual(matrixClone([[1]]), [[1]])); // Test clone with default value. console.log(deepEqual(matrixClone([[1, 2], [1, 4]], 1), [[1, 1], [1, 1]])); console.log(deepEqual(matrixClone([[1, 2], [1, 4]], null), [[null, null], [null, null]]));