如何打印_.zip.apply()的结果

时间:2014-04-22 14:46:29

标签: javascript underscore.js apply

我第一次尝试使用underscore.js,并希望将我的行数组转换为列。因为,我需要加入2D数组

我在这里查看了讨论,发现可以通过_.zip.apply()完成。但是,当我尝试它时,它没有显示任何重复

  Final = my 2D array
  dtr = ['s', 's', 'n'];

我需要将dtr与final连接,以便dtr中的每个元素都是最终数组中的列标题,这样做:

  _.zip.apply(dtr, Final)

但是没有显示任何结果

预期结果:enter image description here

我的二维数组: - enter image description here

并且dtr数组需要位于2d数组的顶部..希望它很清楚。

2 个答案:

答案 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']]