JavaScriptにはコンマで区切られた文字列があり、各列に対して複数の配列に分割したいのですが、最初の数行は無視したいです。たとえば、次の文字列を変換したい場合、
let data = "test,data,\n,ignore,this,\n,A,B,C,\n,1,2,3,\n,1,2,3";
次のような配列に。
["A", "1", "1"]
["B", "2", "2"]
["C", "3", "3"]
編集
これは、私が試した最初の解決策です。うまくいきますが、本当に良い解決策ではありません:/
for (let i = 1; i < out.length; i++)
{
let arr = out[i].split(',');
if (i === 1)
{
for (let j = 0; j < columns; j++)
{
let col = "arr" + j;
console.log(col);
obj[col] = [arr[j]];
}
console.log(obj);
}
else
{
for (let j = 0; j < columns; j++)
{
let col = "arr" + j;
let val = arr[j];
if (j !== "")
{
obj[col].push(val);
}
}
}
}
最終的に、文字のマップを対応する数字の配列に作成したいので、キー値がどうなるかはわかりません。だから私は次のようなものを得ようとしています、
"A": ["1", "1"]
"B": ["2", "2"]
"C": ["3", "3"]
回答 3 件
期待される結果を得るには、最初に文字列を「、」で分割し、結果の配列でループを実行し、その変換の中で、数字のアルファベットと一致する数字を比較して、それぞれの配列にプッシュする必要があります。 以下のコードのような
var datArray= []; a = []; b = []; c = []; let data = "test,data,\n,ignore,this,\n,A,B,C,\n,1,2,3,\n,1,2,3"; datArray = data.split(','); for(var i = 0; i < datArray.length; i++) { if(datArray[i] == 'A' || datArray[i] == 1) { a.push(datArray[i]); } else if(datArray[i] == 'B' || datArray[i] == 2) { b.push(datArray[i]); } else if(datArray[i] == 'C' || datArray[i] == 3) { c.push(datArray[i]); } } console.log(a); console.log(b); console.log(c);
これはあなたができる方法の一つです...
このメソッドはハードコーディングされていません!このメソッドを使用すると、次を処理できます。 ABCDEF ....、1 2 3 4 5 6 ...
最初のアクションのために分割します。次に、Not A Number関数isNaNを検出してA B Cを検出します。
配列ヘルパー: var notNumber = []; var numbers = [];
データを保存する。
最後に、結果の配列を生成します!
これを試して :
var data = "test,data,\n,ignore,this,\n,A,B,C,\n,1,2,3,\n,1,2,3"; var handler = data.split(","); var preventFlag = true; var countNaN = 0; var notNumber = []; var numbers = []; //console.log(handler); for (var x = 0;x < handler.length;x++) { var currentData = handler[x]; if (preventFlag == false) { if ( isNaN(currentData) ) { notNumber.push(currentData); } else { if (currentData != "\n") { numbers.push(currentData); } } } if (currentData == "this"){ preventFlag = false; } } //console.log(notNumber) //console.log(numbers) for (var z = 0; z < notNumber.length;z++) { window["result" + z] = []; window["result" + z].push(notNumber[z]); //console.log(window["result0"]) window["result" + z].push(numbers[z]) window["result" + z].push(numbers[z + (notNumber.length) ]) } // GENERATE RESULT ARRAY console.log(window["result0"]); console.log(window["result1"]); console.log(window["result2"]); //["A", "1", "1"] //["B", "2", "2"] //["C", "3", "3"]
',\n,'
で分割できます 行を取得し、アイテムをコンマで分割します。次に、最初の2つの配列を省略します。