1. ホーム
  2. javascript

[解決済み] .map()はJavascriptのES6 Mapか?

2022-07-31 23:55:36

質問

あなたならどうしますか?本能的に、やりたいと思う。

var myMap = new Map([["thing1", 1], ["thing2", 2], ["thing3", 3]]);

// wishful, ignorant thinking
var newMap = myMap.map((key, value) => value + 1); // Map { 'thing1' => 2, 'thing2' => 3, 'thing3' => 4 }

からはあまり収穫がありません。 のドキュメントからはあまり何も得ていません。 .

私が知っているのは wu.js を実行していますが バベル プロジェクトを実行しており トレーサー を含めたくないのであれば に依存しているようです。 .

を抽出する方法については、私も少し無知です。 をどのように抽出するのか、ちょっとわからない。 をどのように自分のプロジェクトに取り込むかについては、ちょっとお手上げです。

私がここで欠けているものについて、明確で簡潔な説明が欲しいです。ありがとうございます。


ES6 マップのドキュメント 参考までに

どのように解決するのですか?

そこで .map 自体は、あなたが気にする1つの値しか提供しません... とはいえ、これに取り組むにはいくつかの方法があります。

// instantiation
const myMap = new Map([
  [ "A", 1 ],
  [ "B", 2 ]
]);

// what's built into Map for you
myMap.forEach( (val, key) => console.log(key, val) ); // "A 1", "B 2"

// what Array can do for you
Array.from( myMap ).map(([key, value]) => ({ key, value })); // [{key:"A", value: 1}, ... ]

// less awesome iteration
let entries = myMap.entries( );
for (let entry of entries) {
  console.log(entry);
}

注:この2番目の例では、多くの新しいものを使っています。 ... Array.from は任意のイテラブルを取ります(いつでも、あなたが [].slice.call( ) やSets、Mapを使います) を受け取り、それを配列に変えます... ...Mapは配列に強制されると、配列の配列になり、ここで el[0] === key && el[1] === value; (のような配列になります(基本的には、上で私が例のMapにプリフィルしたのと同じ形式です)。

ラムダの引数の位置で配列の再構築を行い、配列のスポットを値に割り当てて、各エルに対してオブジェクトを返しています。

Babel を使用している場合、実運用では、Babel のブラウザポリフィル ("core-js" と Facebook の "regenerator" を含む) を使用する必要があるでしょう。

私は、それが Array.from .