スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
君のソースから わずらわしい if else if を消す方法 JavaScript編
JavaScriptに比べると、Perlの方が断然詳しいのだが、
http://bingobingobingo.blog49.fc2.com/blog-entry-868.htmlを、
JavaScriptに焼き直す。
test = 'tanaka';

if(test == 'nakanishi'){
  alert('こんにちは中西さん');
}
else if(test == 'tanaka'){
  alert('こんにちは田中さん');
}
else if(test == 'suzuki'){
  alert('こんにちは鈴木さん');
}
↓こうなる
hash.nakanishi = function(){ alert('こんにちは中西'); };
hash.tanaka    = function(){ alert('こんにちは田中'); };
hash.suzuki    = function(){ alert('こんにちは鈴木'); };

test = 'tanaka';

hash[test]();


test = 'tanaka';

name;

if(test == 'nakanishi'){
  name = '中西';
}
else if(test == 'tanaka'){
  name = '田中';
}
else if(test == 'suzuki'){
  name = '鈴木';
}

alert(name);
↓ こうなる
test = 'tanaka';

name = ({
          nakanishi: '中西',
          tanaka   : '田中',
          suzuki   : '鈴木'
       })[test];

alert(name);



test =  'こんにちわ';
c    = {
        asa : new Array(),
        hiru: new Array(),
        yoru: new Array()
       };

if(test.match('おはよう')){
 alert('朝だよ');
 c.asa.push('朝');
}
else if(test.match('こんにちわ')){
 alert('昼だよ');
 c.hiru.push('昼');
}
else if(test.match('こんばんわ')){
 alert('夜だよ');
 c.yoru.push('夜');
}
↓ こうなる
for文の挙動がPerl と違うので、mapは実装されているとして...
test = 'こんにちわ';

c    = {
        asa : new Array(),
        hiru: new Array(),
        yoru: new Array()
       };

new Array(
    ['おはよう'  , '朝だよ', 'asa',  '朝'],
    ['こんにちわ', '昼だよ', 'hiru', '昼'],
    ['こんばんわ', '夜だよ', 'yoru', '夜']
).map(
      function(i){
          if(test.match(i[0])){
            alert(i[1]);
            c[i[2]].push(i[3]);
          }
      }
     );

map だと 繰り返しを途中で止めれん.....
スポンサーサイト
pascal
一番下のコードもハッシュで書いた方がスマートじゃない?

when = ({
'おはよう' : ['朝だよ', 'asa', '朝'],
'こんにちわ': ['昼だよ', 'hiru', '昼'],
'こんばんわ': ['夜だよ', 'yoru', '夜']

})[test]

alert(when[0]);
c[when[1]].push(when[2])
2008/10/10 (金) 11:47:02|URL |#-
ビンゴ中西
ハッシュを使うと、
正規表現じゃなくなってしまうんだよぉ。

おはよう の部分を正規表現でマッチしたらの例なんだ。
2008/10/10 (金) 19:51:22|URL |#-
pascal
あー、正規表現であることは必要条件。

その条件なら個人的には3項演算子使うなぁ。もしくは普通にcase文

var x = test.match('おはよう') ? ['朝だよ', 'asa', '朝']
:test.match('こんにちわ') ? ['昼だよ', 'hiru', '昼']
:test.match('こんばんわ') ? ['夜だよ', 'yoru', 夜']
: undefine;
alert(x[0]);
c[x[1]].push(x[2])
2008/10/11 (土) 00:22:12|URL |#-
ビンゴ中西
なるほど。

形的には、

var x = 三項演算子
    三項演算子

xを使って処理

って感じか
2008/10/11 (土) 00:40:38|URL |#-
pascal
そそ。こういう書き方をすれば三項演算子をかなり綺麗に使える。
2008/10/11 (土) 06:31:25|URL |#-
コメントを投稿する
Name:
URL:
Comment:

秘密:管理者にだけ表示を許可する
トラックバック
この記事のトラックバックURL
この記事にトラックバックする(FC2ブログユーザー)
?Υ??? if else if ä? JavaScript??Τä?Τ?ä??
2008/10/10(金) 14:36:27 | ???
ブログ検索

プロフィール

ビンゴ中西
Perlが好きである。
プログラミング言語のほとんどは独学。独学の過程で多くのプログラム仲間にも色々教わりました。

FC2カウンター

カレンダー

07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -

ブロとも申請フォーム

この人とブロともになる

| ホーム |
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。