如何使用Lodash以相反的顺序迭代数组?

时间:2016-12-06 19:37:25

标签: javascript arrays lodash

我想使用Lodash以相反的顺序迭代数组。这可能吗?

我的代码如下所示。

var array = [1, 2, 3, 4, 5];
_.each(array, function(i) {
   _.remove(array, i);
});

当我_.pullAt(array, 0)时,新数组为[2, 3, 4, 5]。所有数组元素向左移动1个位置,当前索引指向元素3.下一次迭代后,3将被删除,然后是5.在第3次迭代后,数组包含[2, 4],我无法删除。

如果我以相反的顺序迭代数组,那么这个问题就不会出现了。在Lodash中,我可以以相反的顺序迭代数组吗?

2 个答案:

答案 0 :(得分:2)

您可以使用版本4中可用的_.reverse

var array = [1, 2, 3, 4, 5];
array = _.reverse(array)
console.log(array)
//5, 4, 3, 2, 1

答案 1 :(得分:1)

如果你只想要那个并且选择你的武器,请参见How do I empty an array in JavaScript?

否则,严格回答问题,将索引从数组的长度迭代为零,您可以使用"down-to" --> operator 1 。但这并不是必需的,在这种情况下,即使是下划线也不是必需的,因为.pop function就足够了。

var arr = [1, 2, 3, 4, 5],
    index = arr.length;

while (index --> 0) {
    console.log(index);
    arr.pop();
}
console.log(arr);

如果您使用Lodash,就像问题中引用的函数似乎表明的那样,您可以使用_.eachRight

var arr = [1, 2, 3, 4, 5];

_.eachRight(arr, function(value) {
  console.log(value);
  arr.pop();
});

console.log(arr);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.2/lodash.min.js"></script>

1 向下运算符不存在,只有--递减,然后进行>比较。功能