読者です 読者をやめる 読者になる 読者になる

はぴらき合理化幻想

海外3年/西成ドヤ2年/沖縄2年/事故物件で寝袋3年目、ミニマリスト10年目でダンボール2箱の持ち物と保存食で大阪に定住中。

JavaScriptの連想配列は.lengthでは要素数を取得できないのでfor inを活用する

配列のつもりで要素数を.lengthで取得しようとしたが、連想配列では無理だった。

for inで要素数をカウント可能

サンプルコード

連想配列でも要素数をカウントできるサンプルコード。

<script>
var myfavorites={
  fruit:'durian',
  drink:'ginger ale',
  sport:'swimming',
  radio:'lounge 44',
  model:'jenn'
};

var len=0;
for (var i in myfavorites) {
  len++;
}
document.write(len); //5と表示される。
</script>

実行結果

このパラグラフの下にJavaScriptでコードを記述している。ブラウザでご覧の方には5と表示され、RSSフィードでご覧の方には何も表示されない。地味でごめん。

連想配列を.lengthで要素取得しようとするとundefined

サンプルコード

<script>
var myfavorites={
  fruit:'durian',
  drink:'ginger ale',
  sport:'swimming',
  radio:'lounge 44',
  model:'jenn'
};

var len=myfavorites.length;
document.write(len); //5と表示されない→undefined
</script>

実行結果

このパラグラフの下にJavaScriptでコードを記述している。地味でごめん。

連想配列を配列と勘違いした理由

記述していた連想配列のプロパティを数字にしていたから。次のコードのような感じ。

var myfavorites={
  1:{
    fruit:'durian',
    drink:'ginger ale'
  },
  2:{
    sport:'swimming',
    radio:'lounge 44',
    model:'jenn'
  },
  3:{
    book:'7 habits'
    song:'eyes on me',
    movie:'mannequin 2'
  }
};

//連想配列をカウント
var len=0;
for (var i in myfavorites) {
  len++;
}
document.write(len); //3と表示される。

//配列をカウントするが連想配列をカウントしない
var len=myfavorites.length;
document.write(len); //3と表示されない→undefined

上記コードの実行結果は次の通り。地味でごめん。

以上。

てすとてすと