[英]How to get the array index in 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 _.each
在 JavaScript 中编写此代码? 我在 JavaScript 代码中找不到像 [i] 这样的变量,所以我无法检查条件 [if (days[i] < a && b < days[i+1])]
我的 JavaScript 代码:
_.each(days, day => {
//TODO something
})
从 Lodash文档:
迭代
collection
元素并为每个元素调用iteratee
。iteratee
器使用三个参数调用:(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进行实验。
来自Lodash 文档:
迭代集合的元素并为每个元素调用 iteratee。 迭代器使用三个参数调用:(值,索引|键,集合)。 Iteratee 函数可以通过显式返回 false 提前退出迭代。
_.each
只获取一个 Collection 作为第一个参数进行迭代,并获取一个函数“iteratee”作为第二个参数。 所以, for
对你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]);
}
}
});
您可以在数组中使用 javascript forEach(无需使用 Lodash),并且在 ReactJS 中会更容易:
var days = [5, 15, 25];
days.forEach((day) => {
//do things with the day
window.alert(day)
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.