2017-06-16 203 views
0

我似乎無法找到一種方法來跳過迭代使用lodash _.map,考慮這個數組:checklist =['first','second','third','fourth','fifth','sixth'] 我想映射通過它與步驟3例如,我試過這個代碼,但它不工作:lodash映射跳過迭代

_.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]); 
} 

謝謝

回答

0

地圖,過濾器,的forEach,減少,等...迭代中的所有項目該數組,並且不能跳過項目。對於這個任務,for循環非常合適。

如果你想用lodash實現,使用_.chunk()將數組分成具有所需大小的子數組,然後使用_.forEach()(或映射,過濾器等)進行迭代。

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>

+0

謝謝,我預料到了這一點,但問題在於你不能在JSX中使用for循環裏面的React –

+0

你可以在函數內部使用for循環,並在JSX中調用它。 –

+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>

+0

感謝您的答覆,但這不是我想要的,我編輯我的問題 –

+0

@EliasGhali好吧,我相信你能原諒我的誤會,因爲你原來的問題幾乎沒有什麼用你目前的問題來解決,我回答了你原來的問題。 – JLRishe

+0

當然,謝謝 –