Meteor:同时迭代多个数组?

时间:2014-03-18 20:26:48

标签: arrays meteor

我想我知道这个问题的答案是什么,但也许某人有比我想的更好的解决方案。

如果我想将2个数组传递给模板,请说:

arrName = ['one','two','three'];

arrPic = ['one.jpg','two.jpg','three.jpg'];

我想使用#each helper循环遍历数组并在每张图片下面放置相应的名称。有办法吗?或者我是否需要创建一个临时JSON数组来使其工作,如:

arrCombined = [ { name: 'one', pic: 'one.jpg'}, {name: 'two', pic: 'two.jpg'} etc...

希望这是足够的信息。如果不清楚,请告诉我。

2 个答案:

答案 0 :(得分:3)

Meteor捆绑内核中的下划线,因此您可以使用_.zip_.object帮助者中的任何一个:

  

<强> zip_.zip(*阵列)

     

将每个数组的值与相应位置的值合并在一起。当您具有通过匹配数组索引协调的单独数据源时很有用。如果您正在使用嵌套数组矩阵,_. zip.apply可以以类似的方式转置矩阵。

     

_.zip(['moe', 'larry', 'curly'], [30, 40, 50], [true, false, false]);

     

=> [["moe", 30, true], ["larry", 40, false], ["curly", 50, false]]

     

_.zip.apply(_, arrayOfRowsOfData);

     

=> arrayOfColumnsOfData

     

object_.object(list,[values])

     

将数组转换为对象。传递单个[键,值]对列表或键列表以及值列表。如果存在重复键,则最后一个值获胜。

     

_.object(['moe', 'larry', 'curly'], [30, 40, 50]);

     

=> {moe: 30, larry: 40, curly: 50}

     

_.object([['moe', 30], ['larry', 40], ['curly', 50]]);

     

=> {moe: 30, larry: 40, curly: 50}

检查underscore documentation这些以及您可能使用的其他助手,以便能够以您想要的确切格式构建组合阵列。

答案 1 :(得分:0)

使用临时JSON。

没有捷径。在迭代到另一个数组的同时访问一个数组的项目需要知道模板中的当前idx,这在最后一个版本的Meteor中是不可能的。