>>668
まずな。for in っていうのはオブジェクトが持ってるプロパティを取得するもので
arrayに対してfor in を使うのは間違いとされているんだよ
添字以外のものが取得できてしまう場合がある。
例えば、a = [1, 2, 3] だけなら添字しか取得できないが、
a.hoge = "test" とか実行できるので、その場合は添字0〜2に加えてhogeも列挙してしまう。
正しくはarrayの要素を列挙するなら、for of を使用することだがIEは非対応だ
また、getElementsByClassNameの戻り値は実は配列のように見えるが、NodeListという型で
これはJavaScriptの配列の条件を満たしていない。そもそもgetElementsByClassNameといった
DOMのAPIはJavaScriptの範囲外。ブラウザが提供しているものでJavaScript以外の言語でも
使える仕様であるため、JavaScriptとは独立した存在でJavaScriptの配列と互換性が保たれていない
使えるようにしようという話もあるが一体いつになるのやら
そういう配列っぽいけどJavaScriptの配列ではないものは、それに応じたやり方をするしか無く
getElementsByClassNameの戻り値の場合は、0からlengthまで、カウンタ変数を
インクリメントしていく昔ながらのfor文を使うのが基本の方法
for ofの他に、NodeListのforEachメソッドを使うやり方もあるが動かないブラウザがある
変わったやり方として、NodeListのような配列っぽいオブジェクトをJavaScriptの配列に変換するという方法がある。
JavaScriptの配列に変換するとforEachメソッドが使えるようになる。
この変換の方法としていくつかやり方があって、
1. Array.prototype.forEach.callを直接使う方法
2. Array.prototype.slice.callを使う方法、
3. 比較的最近のブラウザで使えるスプレッド構文を使う方法
4. 同じく比較的最近のブラウザで使えるArray.fromを使う方法
などがある
まあいろいろしがらみがあって、できると思ったようにはできないってことだ
探検
+ JavaScript の質問用スレッド vol.125 +
■ このスレッドは過去ログ倉庫に格納されています
669デフォルトの名無しさん
2018/05/03(木) 05:46:09.51ID:XXqqENcs■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★6 [ぐれ★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 【サッカー】驚異の42得点0失点 中国を怒涛の5連勝に導いた日本人指揮官がまさかの退任か。協会対応に国民激怒 [征夷大将軍★]
- 【テレビ】25年ぶり復活「炎のチャレンジャー」南原清隆&菊池風磨がMC 懐かし「電流イライラ棒」も [湛然★]
- 【音楽】BARBEE BOYS・KONTAが事故で四肢麻痺を公表、新体制で活動は継続 [少考さん★]
- 【画像】童貞は絶ッッッ対"4"を選ぶバレー部J Kが寮でパンパンの集合写真見つけちゃったwwwwwwwwwwwwww [904880432]
- ( ・᷄ὢ・᷅ )あ?
- ブタをぶったたく
- こんな自転車乗ってたやつがいたら?
- 高校球児が大相撲入り。悪そうな顔しとるw [737440712]
- キムタク主演のドラマに山下の曲つければ爆売れ間違いなしだよな
