2016-09-08 2 views
1

Mapまたは一般的な古いJavaScriptオブジェクトのいずれかを受け入れるES2015クラスのコンストラクタを作成しています。入力引数がMapの場合、コンストラクタはそれを保存するだけですが、JSオブジェクトの場合は、たとえばnew Map(Object.keys(obj).map(k => [k, obj[k]]))を経由してマップに変換する必要があります。変数がES2015マップか通常の古いJavaScriptオブジェクトかを確認

私の質問は、入力引数がマップかオブジェクトかどうかを安全に知る方法はありますか?いくつかのMap固有のメソッドをテストすることはできますが、より信頼性が高く読みやすい方法がありますか?私が知る限り、Array.isArrayの地図に相当するものはありません。

const map = new Map() 
 
    ,obj = {} 
 
console.log(map instanceof Map) // true 
 
console.log(obj instanceof Map) // false

また、あなたがオブジェクトを変換したい場合、あなたはObject.entries()を使用することができます。

答えて

1

あなたはそれが地図

2

instanceof operatorを使用しているかどうかをテストするinstanceof Mapを使用することができます地図:

new Map(Object.entries(obj)) 
+3

'Object.entries'はES6ではありません。 – Bergi

関連する問題