在javascript中将数组转换为2D数组(方形矩阵) [英] Convert an array to a 2D array (Square matrix) in javascript

查看:109
本文介绍了在javascript中将数组转换为2D数组(方形矩阵)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在javascript中有一个小功能,我想将一个数组 A 拆分成一个二维数组。
我将用于方形矩阵。显然,如果2x2的方阵在输入中,我希望它是2x2,依此类推3x3和。但是在读完第一行之后我就陷入了困境。所以我的arr行重复了。有没有人对如何正确读取下一行有任何想法。例如,假设我有一个数组

I have got a little function in javascript and I want to split an array A into a 2d array. I will be used for square matrices. Obviously,I want it to be 2x2 if a square matrix of 2x2 is in the input and so on for 3x3 and. But I'm stuck after having read a first row.So my arr rows are repeated. Does anyone have any ideas about how I can get the next rows read properly.So,for instance,lets say I do have an array

A = [2,1,4,5,1,2,3,1,9]

然后我希望我的数组arr看起来像这样:

Then I want my array arr to look like this:

arr = [[2,1,4],[5,1,2],[3,1,9]]

稍后将用于计算矩阵的行列式。

This will later be used for calculation a determinant of a matrix.

function create2Darray(clname) {
  var A = document.getElementsByClassName(clname);
  var arr = new Array();
  var rows = Math.sqrt(A.length);
  for (var i = 0; i < rows; i++) {
    arr[i] = new Array();
    for (var j = 0; j < rows; j++) {
      arr[i][j] = A[j].value;
    }
  }
}


推荐答案

您总是分配相同的值。它应该是这样的:

You are assigning always the same value. It should be something like:

arr[i][j] = A[i*rows+j].value;

编辑:这是一个没有DOM操作的完整函数(也就是说,A是一个简单的整数数组):

Here's a complete function without the DOM manipulation (that is, A is a simple array of integers):

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

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

这篇关于在javascript中将数组转换为2D数组(方形矩阵)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆