2017-06-16 17 views
0

lodash _.mapを使用して反復をスキップする方法が見つからないようです。この配列を考慮してください:checklist =['first','second','third','fourth','fifth','sixth'] 私はこれを3のステップでマップしたいと思います。コードは、それはうまくいきませんでした:lodash map skip iteration

_.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 だけ何か

2回の反復

と私はこのように使用して達成することができます:

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()(または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>

+0

ありがとう、私はこれを期待していましたが、問題はあなたがJSXの中のリアクションで使うことができないということです –

+0

関数内のforループを使用してJSXの中で呼び出すことができます。 –

+0

が働いて、ありがとう! –

0

あなたは2つの異なる操作を話しています.1つは各3番目の項目を取り、もう1つはそれらを変換することです。 .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

確かに、 –