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 // [ [],
best way to generate 2D array in js by ES6 by Array.from
function twodimension(input) {
let index = 0,
sqrt = Math.sqrt(input.length);
return Array.from({
length: sqrt
}, (nothing, i) => Array.from({
length: sqrt
}, (nothingTwo, j) => input[index++]))
}
console.log(twodimension('abcdefghijklmnopqrstupwxy'))
console.log(twodimension([1,2,3,4,5,6,7,8,9]))
function input(length, fill) {
let getNums = length * length;
let fillNums = 1
if (fill == 'minus') {
return Array.from({
length: length
}, (nothing, i) => Array.from({
length: length
}, (nothingTwo, j) => getNums--))
} else if (fill == 'plus') {
return Array.from({
length: length
}, (nothing, i) => Array.from({
length: length
}, (nothingTwo, j) => fillNums++))
}
// you can dping snake ladders also with Array.from
if (fill === 'snakes') {
return Array.from({
length: length
}, (_, one) =>
Array.from({
length: length
}, (_, two) => getNums--)
).map((el, i) =>
i % 2 == 1 && length % 2 == 0 ? el.reverse() :
i % 2 == 0 && length % 2 == 1 ? el.reverse() : el
);
}
}
console.log(input(8, 'minus'))
console.log(input(10, 'plus'))
console.log(input(5, 'snakes'))
you do anything with Array.from, it is easy to use and fast, this is the new method in ES6 syntax