如何将逗号分隔的字符串数组分成各种数组?

时间:2017-01-11 06:10:00

标签: javascript arrays

转换此逗号分隔值数组的最佳方法是什么

[ 'com--test,LFutx9mQbTTyRo4A9Re5ksjdnfsI4cKN4q2,on',
  'com--fxtrimester,SEzlksdfMpW3FxkSbzL7eo5MmqkPczCl2,on',
  'com--fxtrimester,LFutx9mQbTTyRoldksfns4A9Re5I4cKN4q2,on' ]

进入三个阵列?

[ 'com--test',           [ LFutx9mQbTTyRo4A9Re5Ilsdf4cKN4q2', ['on',
  'com--fxtrimester',      SEzMpW3FxkSbzL7eo5MmlkdfqkPczCl2',  'on',
  'com--fxtrimester' ]     LFutksdfx9mQbTTyRo4A9Re5I4cKN4q2 ]  'on']

我正在尝试类似的事情:

 var indexToSplit = unique.indexOf(',');
 var status = unique.slice(3, indexToSplit - 1);
 var use = unique.slice(2, indexToSplit - 2);
 var pros = unique.slice(0, indexToSplit - 3);
 console.log(pros);

但我认为那是错的......感谢任何帮助!

3 个答案:

答案 0 :(得分:3)

你必须循环数组并使用string.split来获得单独的部分。

一旦你有单独的部件,你可以将它们推到必要的阵列;

var d = [ 'com--test,LFutx9mQbTTyRo4A9Re5ksjdnfsI4cKN4q2,on',
  'com--fxtrimester,SEzlksdfMpW3FxkSbzL7eo5MmqkPczCl2,on',
  'com--fxtrimester,LFutx9mQbTTyRoldksfns4A9Re5I4cKN4q2,on'];

var result = [[],[],[]];
var len = 3;
d.forEach(function(str, i){
  var _tmp = str.split(',');
  for (var i = 0; i<len; i++){
    result[i].push(_tmp[i])
  }
})

console.log(result)

一种通用的方式。

  • 循环数据并使用逗号(,
  • 拆分每个字符串
  • 循环拆分值并检查是否存在必要的数组。
  • 如果没有,请初始化数组,但不能执行p[i] = [],因为这将推送到第一个值。您还必须初始化所有先前的值。为此,您可以使用new Array(length)。默认情况下,如果length大于0,则所有索引都将初始化为undefined
  • 现在推送到必要的阵列。职位将保持不变。

var d = ['com--test,LFutx9mQbTTyRo4A9Re5ksjdnfsI4cKN4q2,on',
  'com--fxtrimester,SEzlksdfMpW3FxkSbzL7eo5MmqkPczCl2,on',
  'com--fxtrimester,LFutx9mQbTTyRoldksfns4A9Re5I4cKN4q2,on,test'
];


var result = d.reduce(function(p, c, index) {
  var _tmp = c.split(',');
  for (var i = 0; i < _tmp.length; i++) {
    // Check if position not defined.
    if (p[i] === undefined)
      // Initialize array and add default (undefined) to all elements before current element
      p[i] = new Array(index);

    p[i].push(_tmp[i])
  }
  return p;
}, [])

console.log(result)

答案 1 :(得分:1)

由于您的问题没有要求更一般的情况,我可以安全地假设它为3阵列。我们可以在代码下面的数组上使用forEach函数,可以是可能的解决方案之一

var arr1 = [];
var arr2 = [];
var arr3 = [];

var x = ['com--test,LFutx9mQbTTyRo4A9Re5ksjdnfsI4cKN4q2,on', 'com--fxtrimester,SEzlksdfMpW3FxkSbzL7eo5MmqkPczCl2,on', 'com--fxtrimester,LFutx9mQbTTyRoldksfns4A9Re5I4cKN4q2,on']

x.forEach(function(data) {
  var dataArray = data.split(',');
  arr1.push(dataArray[0]);
  arr2.push(dataArray[1]);
  arr3.push(dataArray[2]);
});


console.log(arr1)
console.log(arr2)
console.log(arr3)

答案 2 :(得分:1)

map这将成为:

  • 表示0,1和2中的位置X:
  • 将列表中的每个项目转换为数组,然后选择第X项

var start = [ 'com--test,LFutx9mQbTTyRo4A9Re5ksjdnfsI4cKN4q2,on',
  'com--fxtrimester,SEzlksdfMpW3FxkSbzL7eo5MmqkPczCl2,on',
  'com--fxtrimester,LFutx9mQbTTyRoldksfns4A9Re5I4cKN4q2,on' ]


var out = [0,1,2].map(i => 
  start.map(x => x.split(',')[i]) )
console.log(out)