我在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"]
答案 0 :(得分:2)
您可以按',\n,'
分割获取行和用逗号分割的项目。然后省略前两个数组。
var data = "test,data,\n,ignore,this,\n,A,B,C,\n,1,2,3,\n,1,2,3",
result = data.split(',\n,').map(s => s.split(',')).slice(2);
console.log(result);
&#13;
答案 1 :(得分:1)
对于您的预期结果,您首先必须将字符串拆分为','然后在结果数组上运行for循环并在转换内部,使用数字字母表,如果找到匹配则比较数字,而不是将其推入相应的数组。 如下面的代码
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);
这是你可以做的一种方式......
答案 2 :(得分:0)
此方法不是硬编码的!使用此方法,您可以处理: 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"]