2016-12-13 3 views
-2

Ich habe ein Array von x=[[3,1],[2,2]] und ich möchte es in x[3][1]=1 und x[2][2]=1 drehen. Der Code sollte auch für längere Arrays wie x=[[3,1],[2,12],[3,3]] funktionieren.Ein 2D-Array in ein spärliches Array von Arrays

+1

Ihre Terminologie ist falsch. 'x = [[3,1], [2,2]]' * ist * ein 2D-Array. Was Sie verlangen, ist ein Array von Arrays in ein Sparse-Array von Arrays zu konvertieren. –

+0

Ein "Array von Arrays" ist ein 2D-Array –

+0

Es ist immer noch möglich, die [[3,1], [2,2]] zu x [3] [1] und x [2] [2] –

Antwort

0

Sie könnten iterieren und ein neues Array erstellen, wenn nicht bereits. Weisen Sie den Wert dann dem angegebenen Index zu.

Diese Lösung nimmt ein neues Array für das Ergebnis.

var x = [[3, 1], [2, 12], [3, 3]], 
 
    result = []; 
 

 
x.forEach(function (a) { 
 
    result[a[0]] = result[a[0]] || []; 
 
    result[a[0]][a[1]] = 1; 
 
}); 
 

 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

1

Angenommen, Sie nehmen zwei Eingänge: pos0, pos1

for (i in x) 
    if (x[i][0] == pos0 && x[i][1] == pos1) { 
     // Do stuff 
    } 

es also im Grunde jeden Index überprüft

0

Sie wie folgt tun können;

var x = [[3,1],[2,12],[3,3]], 
 
    r = x.reduce((p,c) => (p[c[0]] ? p[c[0]][c[1]] = 1 
 
            : p[c[0]] = Array.from({[c[1]]: 1, length: c[1]+1}), 
 
          p),[]); 
 
console.log(r);

0
const x = [[3,1], [2,2]] 

console.log('x =', x) 

// Initialize 1st dimension array 
const y = [] 
for (let i in x) { 
    // Initialize the 2nd dimension array if not exist 
    y[x[i][0]] = y[x[i][0]] || [] 
    // Assign the value to the sparse array 
    y[x[i][0]][x[i][1]] = 1 
} 

console.log('y =', y) 

Ausgang:

x = [ [ 3, 1 ], [ 2, 2 ] ] 
y = [ , , [ , , 1 ], [ , 1 ] ] 
0

Sie können array#reduce können Sie durch Ihre Array zu durchlaufen und überprüfen, ob das Array zum ersten Wert entsprechend existieren, falls es ist nicht initialisieren mit [] und weisen Sie dann den Wert diesem Index zu.

var x=[[3,1],[2,12],[3,3]]; 
 
var result = x.reduce((r,[a,b]) => { 
 
    r[a] = r[a] || []; 
 
    r[a][b] = 1; 
 
    return r; 
 
},[]); 
 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

Verwandte Themen