我第一次尝试使用underscore.js,并希望将我的行数组转换为列。因为,我需要加入2D数组
我在这里查看了讨论,发现可以通过_.zip.apply()
完成。但是,当我尝试它时,它没有显示任何重复
Final = my 2D array
dtr = ['s', 's', 'n'];
我需要将dtr与final连接,以便dtr中的每个元素都是最终数组中的列标题,这样做:
_.zip.apply(dtr, Final)
但是没有显示任何结果
预期结果:
我的二维数组: -
并且dtr数组需要位于2d数组的顶部..希望它很清楚。
答案 0 :(得分:2)
如果您希望dtr数组成为2d数组中的第一个数组。人们可以做到这一点:
var a = ['s','s','n'];
var b = [[50, 50, 50],
[50 , 5, 5],
['hello', 'beta', 'gama']];
var result = [a].concat(b);
结果:
[['s','s','n'],
[50, 50, 50],
[50 , 5, 5],
['hello', 'beta', 'gama']];
修改
var a = ['s','s','n'];
var b = [[50, 50, 'hello'],
[50, 5, 'beta'],
[50, 5, 'gama']];
var result = _.map(_.zip(a, b), _.flatten)
// if native map support _.zip(a, b).map(_.flatten)
结果:
[['s', 50, 50, 'hello'],
['s', 50, 5, 'beta'],
['n', 50, 5, 'gama']];
答案 1 :(得分:0)
我的回答包含两种情况,这取决于数组b的组织方式。
案例一:
var a = ['s','s','n'];
var b = [[50, 50, 'hello'],
[50, 5, 'beta'],
[50, 5, 'gama']];
_.zip(a, b).map(_.flatten) // -> [Array[4], Array[4], Array[4]]
案例二
var a = ['s','s','n'];
var c = [[50, 50, 50],
[50 , 5, 5],
['hello', 'beta', 'gama']];
var b = _.zip.apply(null, c); // content equals to case one variable b
_.zip(a, b).map(_.flatten) // -> [Array[4], Array[4], Array[4]]
结果:
[['s', 50, 50, 'hello'],
['s', 50, 5, 'beta'],
['n', 50, 5, 'gama']]