◆ Array.from は toArray 関数
◆ 第二引数に関数を渡すと map してくれる
Array.of はたぶん Array と一緒で使いドコロが不明
◆ Array.of は引数 1 つで数値の場合でも配列になるのでこっちのほうが使ったほうが良さそう

Array のメソッドに from と of が増えてました
配列のメソッドじゃなくて Array 自体のです
[1,2,3].from // undefined
Array.from // function from() { [native code] }

こういうこと

Array.from

欲しかった toArray です
Array.from({0:1,1:1,length:2})
// [1, 1]

Array.from(document.querySelectorAll("body>div")).forEach(e => console.log(e.id))
/*
prpd
mngb
lga
spch
most-visited
prm-pt
theme-attr
xjsd
xjsi
*/


function a(){
console.log(Array.from(arguments, e => e * e))
}
a(1,2,3,4,5)
// [1, 4, 9, 16, 25]

配列ぽいオブジェクトを配列に変換してくれます
そのままチェーンして forEach などをすることもできます

これまでの多分最短の書き方↓
[].forEach.call(docuement.querySelectorAll("body>div"), e => console.log(e.id))

コレのほうがわずかに短いですが やっぱりこの特殊な書き方よりは Array.from は読みやすいです


さらに なんと from の 2 つ目の引数に関数を渡すと map をしてくれます
配列変換した後によくつかうであろう map をわざわざ Array.from().map() なんてやらなくていいんです
ありがたいです

forEach がしたいときでも 2 つ目の引数を使って最後に返り値を受け取らなければいいだけです
すごく書きやすくなりますね

Array.of

次は of です
これも配列を作るものですが 引数をそのまま配列にします
Array.of(1,0,false,null,1.2,"a",{a:1},[1,2],undefined)
// [1, 0, false, null, 1.2, "a", Object, Array[2], undefined]

これ いるの……?

これでいいんじゃないのって思うんです
Array(1,0,false,null,1.2,"a",{a:1},[1,2],undefined)
// [1, 0, false, null, 1.2, "a", Object, Array[2], undefined]

[1,0,false,null,1.2,"a",{a:1},[1,2],undefined]
// [1, 0, false, null, 1.2, "a", Object, Array[2], undefined]

まとめ

of は使いドコロがよくわからないですけど from はすごく便利!

追記~

Array と Array.of の違いがわかりました
ほとんどの場合は Array と Array.of は一緒です

ですが Array は 引数が 1 つだけで それが数値の場合は特別で length が引数の数値になった空配列になります
Array(5)
// [undefined x 5]

文字列などではその要素だけの配列になりますが 数値で 0 か正の整数じゃないとエラーが発生します
Array("10")
// ["10"]

Array(false)
// [false]

Array([1])
// [Array[1]]

Array(0)
// []

Array(-1)
Uncaught RangeError: Invalid array length(…)

Array(2.3)
Uncaught RangeError: Invalid array length(…)
Array に渡すものが可変で たまたま負の数 1 つだけで実行されたときにいきなりエラーで強制終了なんてしたら困りますよね

Array.of なら ちゃんと全部配列になります
Array.of(-1)
// [-1]

Array.of(2.3)
// [2.3]

Array.of(5)
// [5]

Array.of(0)
// [0]

ES6 が使えるなら Array じゃなくて Array.of を使うようにしたほうがいいです

[] なら大丈夫ですが リテラルじゃなくて 関数じゃないとダメなシーンはありますし Array.of は必要な関数でした