こちらの記事は以下の書籍を参考にアウトプットとして執筆しました。
#Array.fromで配列を作成する
##argumentsオブジェクトは配列ではない
arugumentsは配列ではなく、配列風のオブジェクトである。
配列風とは、配列のようにlengthプロパティを持っていて、展示アクセスができ、forループによる処理もできるオブジェクトのこと
以下のコードはargumentsが配列でないためにエラーになる
function avg(){
const sum=arguments.reduce(function(a,b){
return a+b;
})
return sum/arguments.length;
}
##reduce
arr.reduce(callback( accumulator, currentValue[, index[, array]] )[, initialValue])
callback引数 | 説明 |
---|---|
accumulator | callback値を蓄積する |
currentValue | 現在処理されている配列の要素 |
index | 現在処理中の配列要素のインデックス。initialValueが指定されている場合は0から。そうじゃないなら1から |
array | reduce()が呼び出された配列 |
引数 | 説明 |
---|---|
initialValue | callbackの最初の呼び出しの最初の引数として使用する値 |
##配列風を配列に変換する
Array.fromの目的は配列風を配列に変換することで、配列風とはlengthプロパティを持つオブジェクトのこと
0からlengthまで適切なインデックス位置におかれ、文字列ではlengthプロパティに加えて、各文字のインデックスを示す数値のプロパティがある。このため文字列でArray.fromを呼び出すと文字の配列が返される。
これを使ってargumentsも配列にする。
##NodeListを配列にする
document.querySelectorAllなどのDOMノードリストを返すようなオブジェクトでも配列に変換できる。
というかlengthプロパティを持つオブジェクトであれば何でもうまくいく
#参考
入門JavaScriptプログラミング