2016-09-14 4 views

答えて

1

不変のMapは、のペアで構成された順序がありませんIterable.Keyedです。

// create a Map() 
const map = Map({a: 1, b: 'Hello'}); 
// get a value for a specific key 
console.log(map.get('b')); 
> "Hello" 
// set a new value and assign it to a new Map() 
const newMap = map.set('c', 'This is a new key/value pair'); 
console.log(newMap.get('c')); 
> "This is a new key/value pair" 

それは、そうでsetIn()deleteIn()merge()map()となどの様々な方法へのアクセスを提供します。また、他の変更不可能なデータ型に変換することもできます。 the docs about all of these methods.

変更不可能Seqは、基本となるデータ構造を持つ必要のない反復可能な値のシーケンスです。これはMapからの最初の大きな違いであり、あなたがその定義でこれを見ることができます:

class Map<K, V> extends Collection.Keyed<K, V>

中:権利を取得-行くから、我々はSeqにはないことがわかります

class Seq<K, V> extends Iterable<K, V>

キー値があり、大きな違いはMapです。もう1つの大きな違いは、Seq構造の要素を追加、更新、または削除できないことです。

In addition, to quote Lee Byron:

A配列怠惰な動作です。以前のIterableの非常に軽量なコンテナと、適用するいくつかの操作(マップ、フィルタなど)と考えることができます。その操作は、値を取得するために必要なときにのみ適用されます。 Seqは値そのものを格納しません。

Seqは軽量であるため、特定のロジックチェーンではパフォーマンスが向上する可能性があります。また、JavaScriptオブジェクトに豊富なコレクションAPIを提供するために頻繁に使用されることに注意してください。

+0

「Seq」には、HAMTを作成する代わりに基礎となるデータ構造をラッピングするという利点もあります。 HAMTは、突然変異が作られたとき(つまりデータを共有するとき)、スペースを節約するのには適していますが、決して変わらないデータを単に保存したいときにはあまり効果がありません。その場合、 'Map'に' Seq'を使用してください – Carlo

関連する問題