アプリ版:「スタンプのみでお礼する」機能のリリースについて

字数制限上タイトルがおかしなことになっていますが、
要は、len~(__=C.value)]||vals[__+_]))]));の部分を条件分岐させたいのです。
javascriptのイベントが絡んでいるので、少しややこしいのですが、それは可能ですか。
以前、配列について、他の質問サイトで質問した際、配列自体に、配列を参照し、1つ目の配列から、~以上~未満の数を2つ目の配列でif関数のように参照して、結果を出すというシステムはなく、
イベントと組み合わさることによってそれがなされているものだと聞きました。
となると、ひょっとしてイベントも関わってくるのでしょうか。
どっちにせよ、これができるjsのプログラマーは日本に100人もいないと思います。
以下はそのjsの文です。
var
vals = {
'sb01sb02':3.7,
'sb01sb03':7.8,
'sb01sb04':10.2,
'sb01sb05':12.1,
'sb02sb03':4.1,
'sb02sb04':6.5,
'sb02sb05':8.4,
'sb03sb04':2.4,
'sb03sb05':4.3,
'sb04sb05':1.9,
  'a0b0': 1.2,
  'b0a0': 1.2,
   'a0b1': 2.3,
    'b1a0': 2.3,
     },     
       len = [2,4,6,8,10,12,14,16],
         prc = [[['定期券','170(90)'],['回数券','1,700(900)'],
             ['通勤_1か月','6,540(3,270)'],['3か月','18,640(9,320)'],['6か月','35,320(17,660)'],
           ['通学_1か月','3,030(1,520)'],['3か月','8,640(4,320)'],['6か月','16,370(8,190)'],],
[['定期券','190(100)'],['回数券','1,900(1,000)'],
             ['通勤_1か月','7,360(3,680)'],['3か月','20,980(10,490)'],['6か月','39,750(19,880)'],
           ['通学_1か月','3,400(1,700)'],['3か月','9,690(4,850)'],['6か月','18,360(9,180)'],],
           [['定期券','210(110)'],['回数券','2,100(1,100)'],
     ['通勤_1か月','8,180(4,090)'],['3か月','23,320(11,660)'],['6か月','44,180(22,090)'],
     ['通学_1か月','3,780(1,890)'],['3か月','10,780(5,390)'],['6か月','20,420(10,210)'],],
           [['定期券','230(120)'],['回数券','2,300(1,200)'],
     ['通勤_1か月','8,990(4,500)'],['3か月','25,630(12,820)'],['6か月','48,550(24,280)'],
     ['通学_1か月','4,160(2,080)'],['3か月','11,860(5,930)'],['6か月','22,470(11,240)'],],
           [['定期券','250(130)'],['回数券','2,500(1,300)'],
     ['通勤_1か月','9,810(4,910)'],['3か月','27,960(13,980)'],['6か月','52,980(26,490)'],
     ['通学_1か月','4,530(2,270)'],['3か月','12,920(6,480)'],['6か月','24,470(12,240)'],],
           [['定期券','270(140)'],['回数券','2,700(1,400)'],
     ['通勤_1か月','10,620(5,310)'],['3か月','30,270(15,140)'],['6か月','57,350(28,680)'],
     ['通学_1か月','4,910(2,460)'],['3か月','14,000(7,000)'],['6か月','26,520(13,280)'],],
           [['定期券','290(150)'],['回数券','2,900(1,500)'],
     ['通勤_1か月','10,620(5,310)'],['3か月','30,270(15,140)'],['6か月','57,350(28,680)'],
     ['通学_1か月','5,290(2,650)'],['3か月','15,080(7,540)'],['6か月','28,570(14,290)'],],
           [['定期券','210(110)'],['回数券','2,100(1,100)'],
     ['通勤_1か月','8,180(4,090)'],['3か月','23,320(11,660)'],['6か月','44,180(22,090)'],
     ['通学_1か月','3,780(1,890)'],['3か月','10,780(5,390)'],['6か月','20,420(10,210)']],],
        T=(a,b=document.createElement('tbody'))=>
       a.reduce((b,a)=>
      (a.reduce((c,d)=>
     (c.insertCell().append(d),c),b.insertRow()),b),b),
   
   F=_=>
  _&&T(_,D,R(D.childNodes)),
 
R=_=>
[..._].forEach (_=>
_.remove());
  A.addEventListener('change',_=>
   F(prc[len.findIndex($=>
    $>Math.floor(vals[(_=B.value)+(__=C.value)]||vals[__+_]))]));

A 回答 (4件)

>A、Bとか名前がメチャメチャ



そうでしょうか?
重要なHTML要素には、出現順にA・B・C・Dとふり、
テーブル要素を構成する関数には、T。
change イベントが発生したら実行する関数(function)にはF。
リムーブしたい関数には、R
長さに、len
料金に、prc

今どき全角空白はエディタで簡単に置き換えられ、
難読化したプログラムでもインデントを付けて簡単に整形するツールがあり、
便利すぎる世の中です。
どのように自分のモノにするかは、理解しようとする側で創意工夫すべきです。

投稿には文字数制限が付きまといます。普段から短く書く訓練をしていないとある程度の規模のものを投稿したときに苦労します。
実のところそのような質問は少なかったです。(今後あっても私は答えませんけどね。)

それと過去に戯言だけ投稿すると運営側から苦情がくるので短くするプログラムも書いておきます。

F(prc[len.findIndex($=>$>(vals[(_=B.value)+(__=C.value)]||vals[__+_])|0)]));
    • good
    • 1

No.2さん、質問者さん


失礼しました
でも最初から可読性の無いものを見せてしまったら解読したり崩すのにかなりの時間がかかってしまいます
しかもオブジェクトもA、Bとか名前がメチャメチャで追いにくいです
ここから修正出来たら良いですけど、それまでに違うやり方だったら3つ4つプログラムが作れそうな気がします
    • good
    • 1

変数Fへの代入は下記のようにすべきです。


すでにこれだけで条件分岐してます。

F=_=>R(D.tBodies)||_&&T(_,D),

No1さん!
>まっさらな状態から作った方が

彼には才能があるそうです。
諦めろ!なんて決めつけない方が良いと思います。
質問者さんに失礼です。
がんばれ!
    • good
    • 2

JavaScript専門のメンタの人なら可能かも知れません



これは、してやられましたね
素人じゃこの暗号は解けませんぞ!!
諦めてまっさらな状態から作った方が早いと思います
いきなりこんなマニアックな物から手を出しちゃいかんです
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!