Использование lodash
для транспонирования матрицы так просто:
_.zipWith(...data, _.concat)
var data = [
[["x"], ["value1"], ["value2"], ["valu3"]],
[["data1"], [0], [1], [2]],
[["data2"], [2], [1], [0]]
]
var res = _.zipWith(...data, _.concat);
console.log(res);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
А также в Vanilla JS это так просто, как это
data[0].map((_,i)=>data.map(r=>r[i][0]))
var data = [
[["x"], ["value1"], ["value2"], ["valu3"]],
[["data1"], [0], [1], [2]],
[["data2"], [2], [1], [0]]
];
var res = data[0].map((_,i)=>data.map(r=>r[i][0]));
console.log(res);
Примечание: Вам даже не нужно _.concat
, и только _.zip
будет работать (без 2-го аргумента), если бы все ваши строки былине вложенные, в ваших строках данных нет [A, B, C, ...]
ваши строки [[A], [B], [C], ...]
, но при выводе вам нужен простой массив для строк, поэтому _concat
используется, чтобы сделать их простым массивом для каждой результирующей строки.Точно так же в простой версии JS [0]
в r[i][0]
требуется, потому что у нас есть вложенные данные уровня в каждой строке, в противном случае (для простой строки в качестве ввода) это могло бы быть r[i]