如何使用下划线迭代从最后一个元素到第一个元素的元素列表?

时间:2013-05-27 05:03:28

标签: underscore.js

如何在下划线中使用_.each迭代列表从头到尾?

lister = ['a', 'c', 'd', 'w', 'e'];
_.each(_.range(lister.length, 0 ,-1), function (val,i) {
   console.log(val);
}, lister);

这会在控制台中打印数字5到1。使用下划线的_.each代替传统“for”循环是不是一个好主意?

3 个答案:

答案 0 :(得分:10)

在迭代它之前只需reverse the array吗?

lister.reverse();

要回答您的_.each() vs for loop问题,have a look here

答案 1 :(得分:8)

Underscore没有给你一种方法来反向收集一个集合,只是转发。 反转数组解决了问题,就像反转元素放入数组的方式一样。

反向遍历的一种可能解决方案是回归普通Javascript:

for (var i = arr.length; i-- > 0; )

答案 2 :(得分:1)

除非你想在每次运行后添加另一个.reverse(),否则所有这些答案都会改变不是他想做的数组。

但是由于oyu正在使用loDash,你可以通过在每个()调用中包装克隆或cloneDeep中的数组来轻松避免这种情况

var letterArray = [ 'a', 'b', 'c', 'd', 'e' ];
_.each( _.clone(letterArray).reverse(), function(v, i) {
   console.log( i+1 );
});

这将记录5,4,3,2,1而不影响原始数组。