我想创建一个具有非固定行数的数组或矩阵
var matrix=[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
我该怎么做?
答案 0 :(得分:6)
使用 Array.from
和 Array#fill
方法的ES6解决方案。
function matrix(m, n) {
return Array.from({
// generate array of length m
length: m
// inside map function generate array of size n
// and fill it with `0`
}, () => new Array(n).fill(0));
};
console.log(matrix(3,2));

答案 1 :(得分:1)
您可以使用以下代码:
function matrix(m, n) {
var result = []
for(var i = 0; i < n; i++) {
result.push(new Array(m).fill(0))
}
return result
}
console.log(matrix(2,5))
答案 2 :(得分:1)
可以这样做:
Array(n).fill(Array(m).fill(0))
哪里
n - number of rows
m - number of columns
答案 3 :(得分:0)
我使用以下ES5代码:
var a = "123456".split("");
var b = "abcd".split("");
var A = a.length;
var B = b.length;
var t= new Array(A*B);
for (i=0;i<t.length;i++) {t[i]=[[],[]];}
t.map(function(x,y) {
x[0] = a[parseInt(y/B)];
x[1] = b[parseInt(y%B)];
});
t;
它返回一个2d数组,显然你的输入不必是字符串。
对于ES6和其他语言中的一些惊人答案,请在堆栈交换中查看我的问题,ppcg。
答案 4 :(得分:0)
const create = (amount) => new Array(amount).fill(0);
const matrix = (rows, cols) => create(cols).map((o, i) => create(rows))
console.log(matrix(2,5))
const matrix = (rows, cols) => new Array(cols).fill(0).map((o, i) => new Array(rows).fill(0))
console.log(matrix(2,5))