2017-07-08 3 views
0

Ich bin wirklich neu in Javascript, und beim Versuch, das Folgende zu erreichen, stolperte ich über einige Probleme. Ich habe versucht, das Forum zu durchsuchen - und ein Problem wie dieses ist wahrscheinlich etwas, das vorher gelöst wurde, aber ich weiß nicht, wonach ich suchen soll. Dies ist auch der Grund für die extrem kreativen Titel:/Array-Konvertierung?

Wie auch immer - das ist mein aktueller Code:

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

Ich bin nicht ganz sicher, ob der Code für mich selbst spricht, aber dies ist Pseudo für das, was ich wollen erreichen;

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

Kann mir jemand sagen, welchen Teil ich verpasst habe oder was ich tun kann? Weil ich bin immer „Typeerror: undefined ist kein Objekt“ in diesem Teil:

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

ich nicht bin, bedeutet einen professionellen Coder - ich weiß, der Code ist nicht schön, aber das ist mehr oder weniger das Ergebnis von Trial-and-Error ... Mehr Fehler als Test tatsächlich.

Vielen Dank im Voraus für Ihre Antwort!

+0

Was denken Sie 'new Array (new Array)' tut? Weil ich denke, dass es Unsinn ist. –

+0

Sie versuchen, 'convertedtarray [h] [i]' zu setzen, aber Sie haben 'convertedtarray [h] 'noch nicht gesetzt –

Antwort

0

Es gibt ein paar Probleme mit Ihrem Code. Erstens, wenn Sie ein nXn Array möchten, haben Sie originalarray falsch definiert. Zweite new Array(new Array) deklariert kein Array von Array für Sie, wenn das ist, was Sie dachten. Sie benötigen hier zwei Schleifen, da Sie bereits die erste für die Pflege der Spalten und die zweite für die Zeilen gefunden haben.

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

Was macht das? Wie beantwortet es die Frage? – Rob

+0

@Rob Ich war noch fertig in Bearbeitung. – Dij

+0

Das hat mein Problem behoben - vielen Dank! :) – Phonomaniac

0

Eine mögliche Lösung:

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

Was macht das? Wie beantwortet es die Frage? – Rob

+0

Vielen Dank für diesen Code! Ich habe es nicht zur Arbeit gebracht, aber ich denke, es hat mit der "Karten" -Funktion zu tun. Da ich für Photoshop programmiere, könnte das das Problem sein :( – Phonomaniac

+0

Ah, das macht Sinn. 'Array.prototype.map' ist in früheren Versionen von JavaScript/ECMAScript nicht verfügbar. –