◆ 二次元配列を Map のコンストラクタに渡すと Map に変換される
◆ オブジェクトを渡してもいまのところエラー
  ◆ Object.prototype[Symbol.iterator] を自作すると動くようにできる


Set のコンストラクタに配列を入れると Set に変換してくれました
(↑の関連を参照です)

じゃあ Map でもできるの?と試してみます

配列

new Map([1,2,3])
Uncaught TypeError: Iterator value 1 is not an entry object(…)

エラーがでています

無理なのかなぁ
と思ったのですが よく考えると Map では key と value のペアを登録するはずです
new Map([[1,2],[3,4]])
// Map {1 => 2, 3 => 4}
これでいけないかな とやってみたら Map に変換ができました
二次元配列を渡すと良さそうです

new Map([[[1,2,3], {a:1,b:2}],["key", "value", "???"]])
// Map {[1, 2, 3] => Object {a: 1, b: 2}, "key" => "value"}

内側の配列が 3 つ以上の要素数でも 最初の 2 つが使われるだけでエラーにはならないようです
3 次元以上の配列や オブジェクトになっていても key や value が配列やオブジェクトになるだけで 問題なく使えました

オブジェクト

考えてみると配列じゃなくてオブジェクト渡せばもっと楽では?と思ったのでオブジェクト
new Map({a:1})
Uncaught TypeError: Map is not a function(…)

エラーだ

ここのと同じで iterator の問題のような気がします

ということで
Object.prototype[Symbol.iterator] = function*(){
    for(var k in this)
        if(this.hasOwnProperty(k))
            yield [k, this[k]]
}

こんなのを準備
もう一回やってみると
new Map({a:1})
// Map {"a" => 1}

できた!!!!

Symbol.iterator のところは Chrome の実装待ちですね
それまではとりあえず↑のコードをいれておくとよさそうです