Immutable.js
のmap
を使用してList
関数内のインデックス番号を取得する方法がありません。
var list2 = list1.map(mapper => { a: mapper.a, b: mapper.index??? }).toList();
ドキュメンテーションはmap()
がIterable<number, M>
を返すことを示しています。私が必要としているものにエレガントな方法はありますか?
index
APIの現在の反復map
は、その2番目のパラメータを通じて取得できます。
以下も参照してください。 https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/map
パラメータ
callback - 3つの引数を取り、新しいArrayの要素を生成する関数
1)currentValue
配列内で現在処理中の要素。2)インデックス
配列内で処理されている現在の要素のインデックス。3)配列
配列マップが要求されました。
例:
var list = [ 'h', 'e', 'l', 'l', 'o'];
list.map((currElement, index) => {
console.log("The current iteration is: " + index);
console.log("The current element is: " + currElement);
console.log("\n");
return 'X';
});
出力:
現在の繰り返しは0です。
現在の要素は次のとおりです。h現在の繰り返しは次のとおりです。1
現在の要素は次のとおりです。e現在の繰り返しは次のとおりです。2
現在の要素は次のとおりです。現在の繰り返しは、3です。
現在の要素は次のとおりです。現在の反復は以下のとおりです。4
現在の要素は次のとおりです。
Array.prototype.map()
インデックス:コールバック関数の2番目の引数を介してインデックスArray.prototype.map()
にアクセスできます。これが一例です。
const array = [1, 2, 3, 4];
const map = array.map((x, index) => {
console.log(index);
return x + index;
});
console.log(map);
Array.prototype.map()
の他の引数:Array.map()
の2番目の引数は、コールバック関数のthis
値になるオブジェクトです。コールバックを宣言するには、 通常のfunction
キーワード を使用する必要があることに注意してください。矢印関数はthis
キーワードへの独自のバインディングを持たないからです。例えば:
const array = [1, 2, 3, 4];
const thisObj = {prop1: 1}
const map = array.map( function (x, index, array) {
console.log(array);
console.log(this)
}, thisObj);
Ramdaを使う:
import {addIndex, map} from 'ramda';
const list = [ 'h', 'e', 'l', 'l', 'o'];
const mapIndexed = addIndex(map);
mapIndexed((currElement, index) => {
console.log("The current iteration is: " + index);
console.log("The current element is: " + currElement);
console.log("\n");
return 'X';
}, list);