Yoppy's Blog

主に何でもない日常の事や技術ネタを更新します

【JavaScript】配列ライクなオブジェクトで配列メソッドを使うときのメモ

 

JavaScript】配列ライクなオブジェクトで配列メソッドを使うときのメモ

突然ですがJavaScriptは配列ライク(配列ではないけど配列のような)オブジェクトが結構あるのご存知でしたか?

もちろん自分も存在は知ってたんですが...そんな配列ライクなオブジェクトで配列メソッドを使うときにコケたのでめも。

配列ライクなオブジェクトの例

ん?何故エラーなんだ?

ここでlengthプロパティの存在と、オブジェクトの種類を判定

なんじゃこりゃ...

lengthプロパティはあるのにArrayオブジェクトじゃない...

これこそが

配列ライクなオブジェクトです。

対処方法

  • for文を使う
  • 配列メソッドのthisArgをapply, callとかを使ってバインド

for文を使う

lengthプロパティがあるのを逆手にfor文でグルっと回しましょう。

配列メソッドのthisArgをapply, callとかを使ってバインド

Array.prototype.forEachなのがアレですが配列ライクなオブジェクトで配列メソッドを使いたいならこれがベストかも

以上!こんな感じでいかがでしょうか?

ちなみに自分は今までfor文使ってて配列メソッドが使えない事に気づかなかって最近気づいたって感じでした。。。


Twitter: @GochiUser

HP: http://yoppy.webcrow.jp