forEach | for in | for of


🧐 どんな複文を書きますか。


「複文」といえば、頭に浮かぶものがある.
for (int i=0; i<n; i++){
~}
do{~}while(~)
while(~){}
したがって,JavaScriptで使用されるrup文については,現時点ではあまり詳しくない.
C、Java、Pythonなどおなじみの私はjsの整理を決意しました.

✔ forEach


foreachは重複文ではありません.
const arr=[1,2,3,4,5];
arr.forEach(item=>{
	console.log(item);
});
//1 2 3 4 5 순서로 출력.
Array objectに適用されます.

✔ for in


for inは、オブジェクトが継承するプロトタイプチェーン上のすべてのpropertyキーをリストします.
すなわち,キーと値のペアだけでなく関数もあれば,確認して出力する.
const obj={
	a:0,
	b:1,
	c:2,
};

for (const key in obj){
	console.log(key, obj[key]);
}
// key에 접근하므로 a,b,c 순서로 출력.
JSを勉強しているうちに、データ型は自由だと思います.例えば、関数を変数に保存したり、上のようにキーと値のペアとして保存したりします.
当たり前ですが、実際のプログラムを設計する際には、各変数名、キー値、関数名をより注意深く書くべきだと思います.

✔ for of


iterableオブジェクトの再記述.
Symbol.iteratorプロパティを持つコレクションに対して「のみ」を繰り返します.
const arr = [1,2,3,4,5]
for (const val of arr){
	console.log(val);
}
/// a, b, c 순서로 하나씩 출력된다.

const obj={
	a:0,
	b:1,
	c:2,
};
for (const val of obj){
	console.log(val);
}
// obj는 한 번에 하나씩 member를 반환하는 객체는 아니다. 
// 따라서 타입 에러가 발생할 것.

🎯 パフォーマンスの比較


Web開発で大量のデータを処理する場合があるかもしれませんが...どのような複文や論理を書くかによって、時間効率に大きな違いがあります.
考えてみれば、すべての属性を巡回するfor inのコストは高いはずですが、今は勉強の深さでテストするのは足りないのではないでしょうか.そこで基準サイト(https://jsben.ch/BQhED)を参考にした.

この表の意味は、一般的にfor inは使わず、キーを知る必要があるときだけ使うということです!そうらしいです.
意外と、基本中の基本(?)因夫とwhileは1位と2位を争った.
個人的には彼らが一番馴染みのある友達だと思っていたので嬉しかったのですが・・・
彼らが状況に応じて異なるものを使うように訓練すべきだと思います.