flatten.js

var matrix = require('../matrix');

// Changes from 2D to 1D: [[1,2,3]] --> [1,2,3]
function matrix_flatten(M)
{
    return ([].concat.apply([], M));
}

/**
 * Flattens / unrolls a matrix from 2d to 1d
 * @function flatten
 * @returns {array}
 * @memberof matrix/other
 * @example 
 * var M = require('./src/matrix_lib');
 * var A = new M([[1,2],[3,4]]);
 * A.flatten()
 * // res: [ 1, 2, 3, 4 ]
 */  
matrix.prototype.flatten = function()
{
    var M = matrix_flatten(this.value);
    return M;
};

//Add to parent class 
matrix.flatten = function(A)
{
    return matrix.make(A).flatten();
}