lodash map skip iteration

时间:2017-06-16 09:00:26

标签: arrays iteration lodash

我似乎找不到使用lodash _.map跳过迭代的方法,请考虑这个数组:checklist =['first','second','third','fourth','fifth','sixth'] 我想以3步为例进行映射,我尝试了这段代码,但它没有工作:

    _.map(checkList, function(value, key){
  console.log('checkList', firstValue);
console.log('checkList1', secondValue);
console.log('checkList2', thirdValue);
}, 3)

预期输出:checkList first , checkList second, checkList third, checkList fourth, checkList fifth, checkList sixth 但只有两次迭代

我能用这样做的东西:

    for(let i = 0; i< checkList.length; i+=3){
  console.log('value', checkList[i]);
  console.log('value1', checkList[i+1]);
  console.log('value2', checkList[i+2]);
}

谢谢

2 个答案:

答案 0 :(得分:0)

你说的是两种不同的操作 - 一种是采取每一种,另一种是改变它们。 .map转换输入中的所有项目,我不确定您为什么假设将3传递给它会执行您所描述的内容。

要执行您要描述的内容,请先过滤项目,然后映射它们:

var checkList = ['first', 'second', 'third', 'fourth', 'fifth', 'sixth'];
var thirdItems = _.filter(checkList, function(v, i) {  return i % 3 === 1; });
var result = _.map(thirdItems, function(value, key) { return 'checkList ' + value; });

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

答案 1 :(得分:0)

映射,过滤,forEach,reduce等等...迭代数组中的所有项目,并且不能跳过项目。对于此任务,for循环非常合适。

如果你想用lodash实现它,使用_.chunk()将数组拆分成具有所需大小的子数组,然后使用_.forEach()(或map,filter等等)进行迭代

var checklist = ['first', 'second', 'third', 'fourth', 'fifth', 'sixth'];

_(checklist)
  .chunk(3)
  .forEach(function(subArr) {
     console.log('checkList', subArr[0]);
     console.log('checkList1', subArr[1]);
     console.log('checkList2', subArr[2]);
  });
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>