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

Turn On Blog

ぺーぺーSEの色々メモ

【javascript】連想配列に特定のキーが含まれるか判定する

illustratorのscriptをさわっています。
jQueryならチョチョイのチョイであろうこともミジミジ手でかいております。

やりたいこと

以下のような連想配列があるとします。

array = { "value1" : "1", "value2" : "2", "value3" : "3"}

この連想配列arrayに対して処理をしていくと、以下の様なことになります。

val1 = array["value1"]; // ok
val2 = array["value2"]; // ok
val3 = array["value3"]; // ok
val4 = array["value4"]; // !!! NG !!!

しかも、デフォルト値を返してくれるとかではなく、ここでスクリプトがクラッシュしてしまう。
これではこまります。

解決策

arrayに対して、以下のfor構文が使えます。

for(var key in array){
  // なんかの処理
}

これを使って、arrayのkeyを順次チェックし、存在したときだけ[]で値を取り出す、というのがよいのでしょうか。

以下の関数を定義してつかってみました。

...
// 呼び出し側
if(contains(array, "value1")){
  val1 = array["value1"];
}
...
// 関数側
function contains(array, searchKey){
    contain = false;
    for(var key in array){
        if(key === searchKey){
            contain = true;
            break;
        }
    }
    return contain;
}

とりあえずしっくりくるものが出来ました。
しばらくこれでしのごうと思います。


それにしても、adobeの公式スクリプト用エディタが使いにくくて参ります。
javascriptが軽快に書けるエディタがあれば知りたいです。

あと、illustratorスクリプトjQuery使う方法とか無いのでしょうか
ふつうにimportすればいいのかな またやってみようと思います。

お読み頂きありがとうございました!