2016-06-16 62 views
0

我试图搜索所需的解决方案并提供帮助,但实际上找不到要写入的内容。我需要这个JavaScript函数来完成以下工作。将行转换为列的javascript函数

我有以下几行。

AAAAAAA 
BBBBBBB 
CCCCCCC 
DDDDDDD 

而我需要将上述数据转换为列,所以输出将是这样的。

ABCD 
ABCD 
ABCD 
ABCD 
ABCD 
ABCD 
ABCD 

这意味着行将被转换为列。

任何人都可以用JavaScript或jQuery函数来获得结果吗?

+2

这是什么格式?他们是4个独立的阵列吗?他们打印出4个不同的html表格行吗? – mwilson

+0

是这个数组还是字符串? –

+0

这是一个测试问题实际上是给定的任务。看到这里的实际功能问题。 http://pastebin.com/kEGBzJzV - 见#1。文本阻止部分。 –

回答

3

可以使用Array#forEach方法

var data = `AAAAAAA 
 
BBBBBBB 
 
CCCCCCC 
 
DDDDDDD`; 
 

 
var res = []; 
 

 
data.split('\n').forEach(function(v) { 
 
    v.split('').forEach(function(v1, i) { 
 
    res[i] = (res[i] || '') + v1; 
 
    }) 
 
}); 
 

 
console.log(res.join('\n'));


如果输入和输出都在阵列格式,那么你可以避开String#split做这样的事情Array#join方法DS

var data = [ 
 
    'AAAAAAA', 
 
    'BBBBBBB', 
 
    'CCCCCCC', 
 
    'DDDDDDD' 
 
] 
 

 
var res = []; 
 

 
data.forEach(function(v) { 
 
    v.split('').forEach(function(v1, i) { 
 
    res[i] = (res[i] || '') + v1; 
 
    }) 
 
}); 
 

 
console.log(res);

+0

工作正常!非常感谢你 –

+0

根据要求,你的data var是一个字符串。它需要是一个数组。 – mwilson

+0

@mwilson:更新 –

1

可能有比这更好的解决方案,试试这个:在问题

var data = ["AAAAAAA", 
      "BBBBBBB", 
      "CCCCCCC", 
      "DDDDDDD"]; 

var output = []; 
data.map(function(a){ 
    for(var i=0; i<a.length;i++){ 
      if(!output[i]) 
       output[i] = ""; 
     output[i] += a[i]; 
    } 
}); 
console.log(output); 
0

%的要求,这将做到这一点:

var arr = ["AAA", "BBB", "CCC"]; 
var result = ['', '', '']; 
for (var i = 0; i < arr.length; i++) { 
    var str = arr[i].split(''); 
    for (var j = 0; j < str.length; j++) { 
     result[j] += str[j]; 
    } 
} 
    console.log(result); 
0

var data = ["AAAAAAA", 
 
\t \t \t "BBBBBBB", 
 
\t \t \t "CCCCCCC", 
 
\t \t \t "DDDDDDD"]; 
 

 
var mapedData = data[0].split('').map(function (string, i) { 
 
\t return data.map(function(string1, i1) { 
 
\t \t return string1.charAt(i); 
 
\t }).join(''); 
 
}); 
 

 
console.log('required data ---', mapedData);