is there a shorter, better way to generate 'n' length 2D array?
var a = (function(){ var i=9, arr=[]; while(i--) arr.push([]); return arr })(); a // [ [],[],[],[],[],[],[],[],[] ] ** old-school short-way**:
var a = (function(a){ while(a.push([]) < 9); return a})([]); UPDATE - Using ES2015
Array(5).fill().map(a=>[]); // will create 5 Arrays in an Array // or Array.from({length:5}, a=>[]) Emptying 2D array (saves memory rather)
function make2dArray(len){ var a = []; while(a.push([]) < len); return a; } function empty2dArray(arr){ for( var i = arr.length; i--; ) arr[i].length = 0; } // lets make a 2D array of 3 items var a = make2dArray(3); // lets populate it a bit a[2].push('demo'); console.log(a); // [[],[],["demo"]] // clear the array empty2dArray(a); console.log(a); // [[],[],[]]
var a = make2D(9);;)var a = (function(a){ while(a.push([]) < 9); return a})([]);