如何在javascript中创建nxn矩阵/数组?

时间:2016-08-31 06:34:16

标签: javascript

我想创建一个具有非固定行数的数组或矩阵

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]]

我该怎么做?

5 个答案:

答案 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))