2016-09-10 8 views
-1

私は通知を生成します私のプロジェクト内のスクリプトは、しかし、これらの通知は、これまで彼らの事前定義された変数を通して同じタイトルと説明を持っていますケースステートメントをループで生成することは可能ですか?

notificationTitle: "Notification", 
    notificationDescription: "This is a notification.", 

これは本当に、かなり退屈です。そして、私は行くことができますし、通知の量を設定する*私はスクリプトを生成し、それらを容易にするために十分なケースステートメントと一緒にしたい、これは合理的ではありません。

function setNotificationDescription(iteration) { 
    "use strict"; 

    switch (iteration) { 
    case 1: 
     values.notificationDescription = "One"; 
     break; 
    case 2: 
     values.notificationDescription = "Two"; 
     break; 
    case 3: 
     values.notificationDescription = "Three"; 
     break; 
    case 4: 
     values.notificationDescription = "Four"; 
     break; 
    case 5: 
     values.notificationDescription = "Five"; 
     break; 
    case 6: 
     values.notificationDescription = "Six"; 
     break; 
    default: 
     values.notificationDescription = "Seven"; 

    } 
} 

*これは、カウントによって満たされることになります。我々は、複数の異なるユーザのための複数の異なった通知を持っているつもりな環境では、私はそうのように、それぞれのいずれかのcase文を記述する必要がありますする必要はありません将来はJSONファイルのオブジェクトを使用しますが、私の例では自分で設定します。

ライブ:http://moonsquads.com/scriptbase/notification-generation/


自動的にこれらのcase文を生成する方法はありますか?代わりに、関数内values.notificationDescriptionの設定、Iは、デモンストレーション目的のために外に移動した

+0

私は、ページのどの部分がcase文を使用しているのかよく分かりません... "類似の構造のオブジェクト"を持っているので、おそらく 'notifications = [{"ケーススイッチの代わりにfor-loopでオブジェクトにアクセスできるように、 "title": "Title"、 "description": "Description"}] –

+0

@SunnyPun私は質問に「case」ステートメントを追加しました。関数が呼び出される場所については、 '' while'ループで呼び出され、現在の繰り返し回数を渡します: '' setNotificationDescription(values.iteratedNotificationAmount); '' – Crowes

+0

あなたのメッセージのソースは何ですか?配列のようなものですか? – SaidbakR

答えて

0

(「アレイ・バージョン」と「大文字バージョン」を比較): https://jsfiddle.net/6j98sxue/1/

これはスイッチケースによってを回避数値インデックスが関係しているので配列を使用し、元のコードに大きな変更を加えるのを防ぎます。

上記に加えて、私はCode Reviewの投稿を提案し、既存のコードのリファクタリングに関する詳細なコメントがあります。 valueオブジェクトを変更して値を取得すると、問題が発生します。依存性注入ができないので、コードをテストするのは難しいです。

関連する問題