数组转换?

时间:2017-07-08 15:03:36

标签: javascript arrays multidimensional-array

我是javascript的新手,在尝试实现以下功能时,偶然发现了一些问题。我试着搜索论坛 - 这样的问题可能已经解决了,但我不知道该搜索什么。这也是极具创意的标题:/

无论如何 - 这是我目前的代码:

var arraylength = 4;
var originalarray = new Array(new Array);
var originalarray = {
    [1, 1, 1, 1]
    [2, 2, 2, 2]
    [3, 3, 3, 3]
    [4, 4, 4, 4]    
}

convertarray(originalarray, arraylength);

function convertarray(originalarray, arraylength){
    var converedtarray = new Array(new Array);
    var temparray = new Array;
    temparray.length = arraylength;

    for (h = 0; h < arraylength; h++) { 
        var temparray  = [];
        var temparray = originalarray[h].split('');

        for (i = 0; i < arraylength; i++) {
            converedtarray[h][i] = temparray[i];
        }
    }
return convertedarray;
}

我不完全确定代码是否能说明问题,但这对我想要实现的内容是伪的;

originalarray = 1111, 2222, 3333, 4444
converedtarray = 1234, 1324, 1234, 1234

有人可以告诉我,我错过了哪些部分或者给我一些我可以做的事情吗? 因为我得到&#34; TypeError:undefined不是一个对象&#34;在这一部分:

converedtarray[h][i] = temparray[i];

我绝不是一个专业的程序员 - 我知道代码并不漂亮,但这或多或少是试错的结果......实际上比试验更多的错误。

提前感谢您的回答!

2 个答案:

答案 0 :(得分:0)

您的代码存在一些问题。首先,如果您想要一个nXn数组,那么您已经定义了originalarray错误。如果你正在思考的话,第二个new Array(new Array)不会为你声明一个数组数组。你需要两个循环,因为你已经找到了第一个用于维护列而第二个用于行。

&#13;
&#13;
var arraylength = 4;
var originalarray = new Array();
var originalarray = [
[1, 1, 1, 1],
[2, 2, 2, 2],
[3, 3, 3, 3],
[4, 4, 4, 4]    
]

console.log(convertarray(originalarray, arraylength));

function convertarray(originalarray, arraylength){
var converedtarray = new Array();

for (h = 0; h < arraylength; h++) { 
    converedtarray[h] = [];
    for (i = 0; i < arraylength; i++) {
        converedtarray[h].push(originalarray[i][h]);
    }        
}
return converedtarray;
}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

可能的解决方案:

&#13;
&#13;
var arraylength = 4;
var originalarray = [
  [1, 1, 1, 1],
  [2, 2, 2, 2],
  [3, 3, 3, 3],
  [4, 4, 4, 4],  
];

function convertarray(originalarray, arraylength) {
  var result = [];
  for (h = 0; h < arraylength; h++) {
    result.push(
      originalarray.map(function(subarray) {
        return subarray[h];
      })
    );
  }
  return result;
}

console.log(
  convertarray(originalarray, arraylength)
);
&#13;
&#13;
&#13;