mattintosh note

どこかのエンジニアモドキの備忘録

JavaScript memo

配列にその要素が含まれているかどうかを確認するのにループを使うのが嫌だったので(数も少なかったし)switch で対応していたけど、なんとなく不便な気がしてきた。

ハッシュの場合は in でそのキーが存在するかどうかを確認する方法があるようなのでこれを使ってみた。

var h = {
  "T2": null,
  "T3": null,
};
var a = ["T1", "T2", "T3", "T4"];
for (var i = 0; a[i] != null; i++) {
  if (a[i] in h) alert("h has " + a[i]);
}

いちいち "key": null を書くのは面倒だけどスクリプトの好きなところに書いたりできるのでまぁいいか。

※modern.IEIE 9 でテストしてみたところ .indexOf() が使えるようなのでこちらの方が簡単か。

あと昨日、要素が height 属性を持っているか調べるのに .hasAttribute("height") を使ったスクリプトを書いたけど、これ IE 対応してないのね…。なので以下のようにしてみた。

if (e["height"] != null) alert(e.tagName + " has height");

う〜ん、なんかよろしくない感じがする。.removeAttribute() が使えるなら .hasAttribute() も使えるようにして欲しい。本当に IE は面倒だ。