2016-06-03 15 views
0

Ich benutze JavaScript in Google App Skript und ich bin super verwirrt, warum es keine einfache Möglichkeit gibt, Zeug nach Wert zu kopieren. Ich möchte einfach einen Teil meiner Matrixwerte2 in die neue Matrixmatrix1 kopieren. Warum ist das nicht möglich?Wie kopiert man Teile eines 2D-Arrays?

var temp = []; 
for (var t = 0; t<9;t++) {temp[t]= 0;}; //[0,0,0,0,0,0,0,0,0] 
var matrix1 = []; 
for (var x = 0; x<20;x++) {matrix1[x]=temp;}; 
for (var x = 0; x < 20; x++) { 
    for (var y = 0; y < 9 ; y++) { 
    matrix1[x][y] = values2[x+1][y+1]; 
}}; 

Der obige Code füllt die Matrix mit identischen (letzten) Zeilen.

+0

Wie wäre es 'Array # slice' – Rayon

+0

' matrix1 [x] [y] = Werte2 [x + 1] [y + 1]; 'Wo haben Sie deklarieren 'values2'? – Pimmol

+0

FWIW, 'Array (10) .fill (0)' zur Erzeugung von '[0,0,0, ..]'. Kombinieren Sie diese Technik mit einer 'Array.map', um eine Reihe von Arrays aus Arrays mit sehr wenig Code zu erstellen ... – deceze

Antwort

0

Die Weitergabe von Arrays als Referenz ist unter Programmiersprachen üblich. In diesem Fall brauchen Sie nicht einmal temp:

var matrix1 = []; 
for (var x = 0; x < 20; x++) { 
    matrix1[x] = []; 
    for (var y = 0; y < 9; y++) { 
    matrix1[x][y] = values2[x + 1][y + 1]; 
    } 
};