我想使用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中,我可以以相反的顺序迭代数组吗?
答案 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 向下运算符不存在,只有--
递减,然后进行>
比较。功能