2016-11-01 43 views
0

Iが、上記の文字列の場合には行と列から構築されている文字列...マップテーブルに行と列を表す区切り文字で区切られた値の文字列を変換

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

を有します4列と4行です(ただし、20列と5行がありますが、私はいつも列と行の量を知っています)。

私がしようとしているのは、キーが列と行になるようにそれらをマップに入れて、ルックアップとして使用できるようにすることです。したがって、マップはA = 0_0, B = 0_1, C = 0_2, ... P = 3_3のようになります。

確かにそれは比較的簡単ですが、私はそれを正しく得ることができません。

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

あなたは、アレイ上に2によって長さと、ループを分割し、.push 'ように値をプッシュすることができる([iは、iがLENを+])'。 [JSFiddle](https://jsfiddle.net/RajeshDixit/68b0j2vr/)を参照することができます – Rajesh

+0

'parts'を繰り返します。 'i'が部分の前半にある場合、文字列の最初の数字は' 0'、それ以外は '1'です。 2番目の数字は 'i%(parts.length/2)'です。 –

+0

私は私の質問を編集しました、私は実際には文字列を正しく説明しませんでした。 – JacketPotatoeFan

答えて

0

これは、入力文字列を受け取り、それに仮想ブロックを形成し、そのCOORDS各を取得するために、マップ内のキーとして使用されているのを助けるかもしれません素子。

ビットマップグラフィックスに慣れている人にとっては、バッファ内の隣接する要素が行ではなく最初に列を埋めるという重要な違いがあるため、使い慣れたコードです。

私の例では、仮想ブロックの4隅の要素を抽出するだけです。

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

優れています。申し訳ありませんが私はそれを受け入れることができません、私は十分な担当者(私は、私は戻ってくるだろう)がありません。ありがとうございました。 - 編集:ああ、できます。投票することはできません。 – JacketPotatoeFan

+0

@JacketPotatoeFan - それは大丈夫です、あなたは大歓迎です。私は気にしない(おかげで!)、私は問題を解決するために答えます - 結果が実際に何かに良いものであるスドクやクロスワードのように。ボーナスとして、誰もがここで少し覚えています。全体のことは単なる気晴らしです...問題を解決してマークすることは、「未回答の質問」キューからそれを削除するのに十分です。 – enhzflep

-1

完全なソリューション

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

これは

+0

私の質問を編集しましたが、文字列についてはっきりしていないようです。 – JacketPotatoeFan

+0

元の質問に入力された入力文字列を使用すると、この関数は迷惑メールを作成します。私はこの「解決策」がどのように役立つかを見落としています。 – enhzflep

関連する問題