2016-11-01 2 views
0

Ich habe eine Zeichenfolge, die aus Spalten und Zeilen aufgebaut ist ...eine Reihe von Trennzeichen getrennte Werte umwandeln, die Spalten und Zeilen in eine Karte Tabelle repräsentieren

A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P 

Im Falle der Zeichenfolge oben gibt wäre 4 Spalten und 4 Zeilen (obwohl es 20 Spalten und 5 Zeilen geben könnte. Ich werde immer die Anzahl der Spalten und Zeilen wissen).

A E I M 
B F J N 
C G K O 
D H L P 

Was ich zu tun versuchen, ist jene, in einer Karte, so dass der Schlüssel ist die Spalte und Zeile, damit ich es als Lookup verwenden können. So würde die Karte aussehen, A = 0_0, B = 0_1, C = 0_2, ... P = 3_3.

Bin sicher, es ist relativ einfach, aber ich kann nicht scheinen, es richtig zu bekommen.

let str = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P"; 
let parts = str.split(","); 
let my_map = new Map(); 

//... loop(s) here 

console.log(my_map.get("3_3")) // P 
+0

Sie können Länge Teile durch 2 und dann die Schleife über Array und Push-Werte als '.push ([i, i + len])'. Sie können sich auf [JSFiddle] beziehen (https://jsfiddle.net/RajeshDixit/68b0j2vr/) – Rajesh

+0

Iterieren Sie die 'Teile'. Wenn "i" in der ersten Hälfte der Teile steht, ist die erste Zahl in der Zeichenfolge "0", sonst "1". Die zweite Zahl ist nur 'i% (parts.length/2)'. –

+0

Ich habe meine Frage bearbeitet, ich habe den String nicht wirklich richtig erklärt. – JacketPotatoeFan

Antwort

0

Dies nimmt die Eingabezeichenfolge helfen könnte und bildet einen virtuellen Block mit ihm, dessen Koordinaten werden dann als Schlüssel in einer Karte verwendet jeder abrufen Element.

Es ist ein vertrauter Code für jeden, der an Bitmap-Grafiken gewöhnt ist - mit dem wichtigen Unterschied, dass benachbarte Elemente im Puffer zuerst die Spalten füllen und nicht die Zeilen.

Mein Beispiel extrahiert nur die Elemente an den 4 Ecken des virtuellen Blocks.

window.addEventListener('load', onDocLoaded, false); 
 

 
function onDocLoaded(evt) 
 
{ 
 
\t let resultMap = makeLookupMap("A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P", ',', 4,4); 
 
\t console.log("Key: 0_0, Value: " + resultMap.get("0_0")); 
 
\t console.log("Key: 0_3, Value: " + resultMap.get("0_3")); 
 
\t console.log("Key: 3_0, Value: " + resultMap.get("3_0")); 
 
\t console.log("Key: 3_3, Value: " + resultMap.get("3_3")); 
 
} 
 

 
function makeLookupMap(inString,delim, nCols,nRows) 
 
{ 
 
\t let stringElems = inString.split(delim); \t // break apart the input string 
 
\t 
 
\t if (nRows*nCols > stringElems.length) 
 
\t \t return undefined; \t \t \t \t \t \t // error - not enough elements 
 
\t 
 
\t let myMap = new Map(); 
 
\t 
 
\t for (var curCol=0; curCol<nCols; curCol++) 
 
\t { 
 
\t \t for (var curRow=0; curRow<nRows; curRow++) 
 
\t \t { 
 
\t \t \t let index = (curCol*nRows) + curRow; 
 
\t \t \t let curKey = curCol + '_' + curRow; 
 
\t \t \t myMap.set(curKey, stringElems[index]); 
 
\t \t } 
 
\t } 
 
\t return myMap; 
 
}

+0

Ausgezeichnet. Tut mir leid, aber ich kann es nicht akzeptieren, ich habe nicht genug Rep (wenn ich das tue, komme ich zurück). Vielen Dank. - Bearbeiten: Oh, ich kann. Kann es einfach nicht stimmen. – JacketPotatoeFan

+0

@JacketPotatoeFan - Das ist okay und du bist willkommen. Es ist mir egal (danke!), Ich antworte für die Lösung von Problemen - wie Sudoku oder Kreuzworträtsel, in denen die Ergebnisse tatsächlich für etwas gut sind. Als Bonus lernt jeder ein wenig hier und da. Die ganze Punkt Sache ist nur eine Ablenkung ... Markieren Sie das Problem als gelöst genug ist, um es aus der Warteschlange "unbeantwortete Fragen" zu entfernen. – enhzflep

-1

Komplettlösung

var a = "A,B,C,D,E,F,G,H"; 
var arr = a.split(','); 
var len = arr.length/2; 
var result = []; 
for (var i = 0; i < len; i++) { 
    result.push([arr[i], arr[i + len]]); 
} 
for (var i = 0;i<len;i++){ 
    for(var j = 0; j <1; j++){ 
    console.log(result[i][j] + " " + result[i][j+1]); 
    } 
} 

Diese

+0

Ich habe meine Frage bearbeitet, scheint mir nicht klar über die Zeichenfolge. – JacketPotatoeFan

+0

Wenn Sie die Eingabezeichenfolge verwenden, die in der ursprünglichen Frage angegeben wurde, erstellt diese Funktion Junk. Ich kann nicht sehen, wie diese "Lösung" hilfreich ist. – enhzflep

Verwandte Themen