CoffeeScript で配列とオブジェクトの走査には for in
, for of
を使い分けるのですが、なかなか覚えられなくて毎回ググっているのでメモ。
配列には for in
ary = []
for value, index in ary
console.log index, value
オブジェクトには for of
obj = {}
for key, value of obj
console.log key, value
for of
だけど、JavaScript にコンパイルしたら for in
になるところがちょっと解せない。
でもオブジェクトには**of
**.... オブにはオブ、これで覚えた!
for
後の変数の記述順
- 配列の場合、
for
のあとにはvalue, index
の順で書く。 - オブジェクトの場合、
for
のあとにはkey, value
の順で書く。
value
が1番目にくるか 2番目にくるかが違うので混乱するが、これは2番目の変数が省略可能になっているのが理由なのかな?
# 配列: index は省略できる
for value in ary
console.log value
# オブジェクト: value は省略できる
for key of obj
console.log key
なんとなく納得できた。