【问题标题】:How to iterate over array in reverse order with Lodash?如何使用 Lodash 以相反的顺序迭代数组?
【发布时间】:2016-12-06 19:37:25
【问题描述】:

我想使用 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 中,我可以以相反的顺序遍历数组吗?

【问题讨论】:

  • 你想清空数组吗?
  • 另外,_.remove_.pullAt 都没有下划线。你在用 lodash 吗?

标签: javascript arrays lodash


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    如果您只想查看How do I empty an array in JavaScript?,然后选择您的武器

    否则,严格回答问题,将索引从数组的长度迭代为零,您可以使用"down-to" --> operator1。但这并不是必需的,在这种情况下甚至不需要下划线,因为 .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 down-to 运算符不存在,它只是一个 -- 递减后跟一个 > 比较。

    【讨论】:

      猜你喜欢
      • 2015-12-09
      • 1970-01-01
      • 2012-01-09
      • 2019-01-15
      • 2012-05-22
      • 2015-03-26
      • 1970-01-01
      • 2017-05-28
      • 1970-01-01
      相关资源
      最近更新 更多