2017-07-08 75 views
0

我真的很陌生的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 

有人能告诉我我错过了什么部分或给我一些我可以做的提示吗? 因为我得到“类型错误:未定义不是对象”在这一部分:

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

我绝不是一个专业编码器 - 我知道代码是不漂亮,但是这是多还是少反复试验的结果......实际上比试验更多的错误。

预先感谢您的回答!

+0

你怎么看'新的Array(新阵列)'呢?因为我认为这是无稽之谈。 –

+0

您正在尝试设置converedtarray [h] [i]'但您还未设置converedtarray [h],但 –

回答

0

你的代码有几个问题。首先,如果你想要一个nXn数组,你已经定义了originalarray错误。第二个new Array(new Array)不会为你声明一个数组的数组,如果这是你在想什么。您将需要两个循环,因为您已经计算出第一个用于维护列的行,第二个用于行。

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; 
 
}

+0

这是干什么用的?它如何回答这个问题? – Rob

+0

@Rob我还在编辑完成。 – Dij

+0

这解决了我的问题 - 非常感谢! :) – Phonomaniac

0

一个可能的解决方案:

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) 
 
);

+0

这是做什么?它如何回答这个问题? – Rob

+0

谢谢你的代码!我没有得到它的工作,但我认为这与“地图”功能有关。因为我是为Photoshop编程的,所以可能是这个问题:( – Phonomaniac

+0

啊,这很有道理,'Array.prototype.map'在早期版本的JavaScript/ECMAScript中不可用。 –