如何在 Lodash _.each 中获取数组索引

新手上路,请多包涵

我是 JavaScript 的新手。我有个问题

我的 Java 代码:

 public void checkArray(int a, int b) {
    int[]days = new int[]{5, 15, 25};
    int[]hours = new int[]{6, 8, 7};
    ArrayList<Interger> result = new ArrayList<>();
    for (int i = 0; i < days.length-1;  i++) {
        if (days[i] < a && b < days[i+1]) {
            result.add(hours[i]);
        } else if (days[i] > a && days[i] < b) {
            result.add(hours[i]);
            if (i > 0) {
                result.add(hours[i-1]);
            }
        }

我如何使用 Lodash 在 JavaScript 中编写此代码 _.each ?我在 JavaScript 代码中找不到像 [i] 这样的变量,所以我无法检查条件 [if (days[i] < a && b < days[i+1])]

我的 JavaScript 代码:

 _.each(days, day => {
    //TODO something
})

原文由 Spirit 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 670
2 个回答

来自 Lodash 文档

遍历 collection 的元素并为每个元素调用 iterateeiteratee 使用三个参数调用: (value, index|key, collection) 。 Iteratee 函数可以通过显式返回 false 提前退出迭代。

这意味着您可以简单地执行以下操作:

 _.each( days, function( day, i ){

});

所以你的整个代码变成:

 var days = [5, 15, 25];
var hours = [6, 8, 7];
var result = [];

_.each( days, function( day, i ){
    if( days[i] < a && b < days[i+1] ){ // days[i] == day
        result.push( hours[i] );
    } else if( days[i] > a && days[i] < b ){
        result.push( hours[i] );
        if( i > 0 ){
            result.push( hours[i-1] );
        }
    }
})

这是一个用于实验的 jsFiddle

原文由 Itay Grudev 发布,翻译遵循 CC BY-SA 4.0 许可协议

来自 Lodash 文档

遍历 集合 的元素并为每个元素调用 iteratee。使用三个参数调用 iteratee:(value, index|key, collection)。 Iteratee 函数可以通过显式返回 false 提前退出迭代。

_.each 只获取一个要迭代的集合作为第一个参数,以及一个函数“iteratee”作为第二个参数。所以, for 对你来说是个不错的选择。

但是,如果您仍想使用 lodash 您可以从 _range 获得帮助来创建索引数组,然后您可以执行类似的操作:

(当然在javascript中)

 let days = [5, 15, 25];
let hours = [6, 8, 7];
let result = [];
_.each(_.range(days.length),function(i) {
    if (days[i] < a && b < days[i+1]) {
        result.push(hours[i]);
    } else if (days[i] > a && days[i] < b) {
        result.push(hours[i]);
        if (i > 0) {
            result.push(hours[i-1]);
        }
    }
});

原文由 SomoKRoceS 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题