89

私は JS ライブラリUnderscoreを使用しており、特に_.eachand_.sortbyライブラリ呼び出しを使用しています。イテレータデリゲート内の値のインデックスを取得する方法があるかどうか疑問に思っています

_.sortBy([1, 4, 2, 66, 444, 9], function(num){ 
    /*It'd be great to have access to the index in here */
    return Math.sin(num); 
});
4

7 に答える 7

165

Index is actually available like;

_.sortBy([1, 4, 2, 66, 444, 9], function(num, index){  });
于 2012-08-29T14:14:48.903 に答える
82

functioniteratorに別のパラメーターを追加することで、現在の反復のインデックスを取得できます。

_.each(['foo', 'bar', 'baz'], function (val, i) {
    console.log(i + ": " + val); // 0: foo, 1: bar, 2: baz
});
于 2012-08-29T14:14:51.537 に答える
19

配列を変換したい場合はiterator、アンダースコアのmap関数のパラメーターにも、2 番目の引数としてインデックスが渡されます。そう:

_.map([1, 4, 2, 66, 444, 9], function(value, index){ return index + ':' + value; });

... 戻り値:

["0:1", "1:4", "2:2", "3:66", "4:444", "5:9"]
于 2014-03-13T07:32:17.980 に答える
10

のイテレータは_.each3 つのパラメータで呼び出されます(element, index, list)。はい、_.eachインデックスを取得します。

sortBy でも同じことができます

于 2012-08-29T14:14:33.070 に答える