Javascript-创建具有两个参数的函数并返回2d数组

时间:2019-05-03 06:50:59

标签: javascript arrays function

我需要编写一个带有两个参数的函数-行和列。此函数的目的是返回具有给定数字和行的2d数组。我需要通过使用函数返回数组。这是一个代码:

我是一个初学者,我们将非常感谢您的反馈。 :-)

我已经检查了StackOverflow,我尝试过用Google搜索它,检查了合适的网站-不幸的是,没有运气

function create2Darray(A) {
            var columns = [];
            var rows = Math.sqrt(A.length);
            for (var i = 0; i < rows; i++) {
                  columns[i] = [];
                  for (var j = 0; j < rows; j++) {
                        columns[i][j] = A[i * rows + j];
                  }
            }
            return columns;
      }

2 个答案:

答案 0 :(得分:1)

您可以将Array.from与具有长度的对象一起使用,并与第二个参数映射为内部数组。

const
    getArray = (l, w) => Array.from({ length: l }, (_, i) =>
        Array.from({ length: w }, (_, j) => i * w + j));

console.log(getArray(3, 2));
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 1 :(得分:0)

您的问题陈述与您尝试的代码不匹配。看来您想将一维数组转换为2D数组。您的代码很好。但是问题是 Math.sqrt(A.length);可能返回float,而i * rows + j将变为float,而数组没有float索引。只需使用Math.ceil()即可解决

function create2Darray(A) {
     var columns = [];
     var rows = Math.ceil(Math.sqrt(A.length));
     for (var i = 0; i < rows; i++) {
        columns[i] = [];
        for (var j = 0; j < rows; j++) {
            columns[i][j] = A[i * rows + j];
        }
    }
    return columns;
}

console.log(create2Darray([1,2,3,4,5,6,7,8]))

以下两种解决方案适用于需要长度和宽度的函数。

function array(l,w){
  let res = [];
  for(let i = 0; i < l;i++){
    res[i] = [];
    for(let j = 0; j < w; j++){
      res[i][j] = (w * i) + j
    }
  }
  return res;
}
console.log(JSON.strigify(array(3,2)))

可以使用嵌套的map()

const array = (l,w) => [...Array(l)].map((x,i) => [...Array(w)].map((x,j) => (i*w) + j))
console.log(JSON.stringify(array(3,2)))

相关问题