2016-09-09 7 views
0

私はES2015を調べて、マップ、セット、配列を調べています。ES2015 - セット、マップ、配列に関する質問

質問1

は、第一に、私は彼らのすべてがそれにアイテムを追加するために、異なる方法を使用する理由に興味があります。

  • Set.add("item");
  • Map.set("item");
  • Array.push("item");

狂気への方法ではなく.pushとしてそれらすべてを保つことはありますか?

質問2

サイズと長さ。

マップとセットが.sizeになっても、アレイには.lengthがあるのはなぜですか?

質問3

マップオーバーアレイはいつ使用しますか?誰もが実際の世界の例を与えることができます、私はあなたがマップでキーとしてオブジェクトを使用するようなことを行うことができますが、なぜあなたは最初にそれを行うだろうと理解しています。


うまくいけば、誰かが、ES2015のおかげで他の新しいスターターを知らせる助けるためにこれをクリアすることができます。

+0

私はすべての質問に答えることはできませんが、私はあなたが 'Map'について混乱していると思います。それは配列のようなものではなく、Objectのようなキー/値ストアです。しかし、通常のjavascriptオブジェクトとの重要な違いは、https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Map – azium

+0

ですオブジェクト? – azium

+0

@azium私が知っているものから、もしあなたが要素を反復したいのであれば、Mapを使う必要があります。 – Owen

答えて

1

セット、マップ、および配列は、異なるメソッドを使用します。これらのメソッドは異なる処理を行うためです。 Array.prototype.push()は、配列の最後に1つ以上の要素を追加します。 Set.prototype.add()も同様ですが、1つの引数しか受け付けません。 push()という名前の場合、配列メソッドと同じように動作すると思う人もいますが、set.push(1, 2, 3)を試してみると、最初の要素だけを追加する理由が混乱します。

Map.prototype.set()はまったく別のものです。 MDNから:

set()方法は、Mapオブジェクトに指定したキーおよび値を持つ要素を追加または更新します。

指定されたキーを持つ要素がすでに存在する場合、このメソッドはMapに要素を追加せず、その要素の値のみを更新します。

あなたは2番目の質問was answered on this blog

lengthは、シーケンス、インデックス可能ですデータ構造のためである - 配列のよう。 sizeは、主に順序付けられていないマップやセットであるコレクション用です。

私はあなたの3番目の質問を本当に理解していません。マップと配列はまったく異なるデータ構造です。マップはオブジェクトと似ています。Maps vs Objects in ES6, When to use?