2017-12-04 10 views
0

私は4つの動的入力を持っています。ユーザーがどれだけ多くのものを選択するか。 入力では記事IDを入力し、成功するとURLに送信します。 URLはので、(私はユニークなVARにこのIDセットのすべてのを必要とするので、私は、私はSWITCH CASEINDEXを使用スイッチケースに複数の値を渡す

$scope.submitChoice = function (name) { 
    $scope.choices.forEach(function(choice, index){ 
     if(choice.name) 
     { 
      switch (index) { 
       case 0: 
        var firstId = choice.name; 
        break; 
       case 1: 
        var secondId = choice.name; 
        break; 
       case 2: 
        var thirdId = choice.name; 
        break; 
       case 3: 
        var fourthId = choice.name; 
        break; 
      } 
      console.log(firstId, secondId, thirdId, fourthId); 
      $scope.getBenchIdForCompare(firstId, secondId, thirdId,fourthId); 
     } 
    }) 
}  

をコントローラにHTMLからIDを渡す

'http://someurl/' + ID + '/someParams' 
example: 'http://someurl/991,992,993,994/someParams' 

のみ2つまたは3つまたは4つのIDを持つことができます私のアプリの別の部分の)。 問題は、私は入力に入力されたIDを送信すると、私は991 992 993 994

を持っている必要がありますので、私は console.log(firstId, secondId, thirdId, fourthId);

コンソール

991 undefined undefined undefined 
undefined 992 undefined undefined 
undefined undefined 993 undefined 
undefined undefined undefined 994 

そして、私は別の関数にこれを渡すことができないとき、私は私のコンソールでこれを取得し、あります

これを行う別の方法はありますか?

+3

'for'ループの外に変数を宣言し、' console.log'を移動し、 '$ scope.getBenchIdForCompare'を' for'ループの外側で呼び出します。 –

+1

@Arter、変数の代わりに '$ scope.variable_names'をとる – Sravan

答えて

2

代わりにmapを使用して、arrayを作成できます。 arrayが作成されると、join()メソッドを使用してそれらを結合することができ、あなたはコンマで区切られた特別な文字列を取得します。このカンマ区切りの文字列を追加して、目的のURLを取得することができます。

$scope.submitChoice = function(name) { 
    var choices = $scope.choices.map(function(choice){ 
    return choice.name; 
    }); 
    console.log(choices.join(',')); 
    $scope.getBenchIdForCompare(choices[0], choices[1], choices[2], choices[3]); 
} 

ES6(スプレッド演算子を使用して)バージョン:

$scope.submitChoice = function(name) { 
    let choices = $scope.choices.map(choice => choice.name) 
    console.log(choices.join(',')); 
    $scope.getBenchIdForCompare(...choices); 
} 
+0

' console.table(choices) 'を使ってテーブルとしても印刷できると思います。 –

+0

ES6のニース –

+0

これはまさに私が必要なものです...ありがとう、私は何か新しいことを学ぶ:) – Arter

1

ここで何が起こっているあなたはchoices配列の一つ一つの要素に関数を呼び出していることです。すべての要素に一意のインデックスがあります。これにより、switch文の大文字小文字は各要素に対して1回だけtrueになります。しかし、choices配列をループしているので、他の3つの変数には決して値が割り当てられません。したがって、undefinedがあります。
私は、変数とその使用法の宣言をforEachループから外すことを提案します。値を代入するためにforEachを使用するだけで、コードは正常に動作するはずです

関連する問題