JavaScript将字符串拆分为多个数组

时间:2018-05-25 09:15:51

标签: javascript

我在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 个答案:

答案 0 :(得分:2)

您可以按',\n,'分割获取行和用逗号分割的项目。然后省略前两个数组。

&#13;
&#13;
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;
&#13;
&#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"]