-3

反復から正しい値を取得したときにループを終了するにはどうすればよいかという混乱に直面しています。以下にコードスニペットを貼り付けました。私がやろうとしているのは、skillID と呼ばれる 1 つの文字列と、emplSkillLevel と呼ばれる他の配列があることです。ループ内でスキル ID が一致する場合、文字列に値を設定した後に文字列を返しますが、いくつかの時点でループはそれを壊しません。

どうすれば終了できますか?

setCellValue: function(skillID,emplSkillLevel){ 
           var cellVal=0;
           $.each(emplSkillLevel, function(index1, item1) {
               var emplSkillLevelID = emplSkillLevel[index1].split("-");
               if(emplSkillLevelID[0] == skillID){
                   cellVal = emplSkillLevelID[1];
                   return cellVal;
                   break;
               }
               else{
                   cellVal=0;
                   return cellVal;
               }

           });

       }
4

4 に答える 4

4

jQuery $.eachループを中断するには、代わりreturn false;break. false 以外の値を返す場合、これは実際には次のことを意味します。continue;

return cellVal;また、それ以降は使用できませんbreak;- リターンはすでに実行をカットしています。

$(emplSkillLevel).each(...)の代わりに使ってみてください$.each(emplSkillLevel,...)

.each()ドキュメント

于 2013-07-01T10:15:36.820 に答える
1

に渡す内部関数から戻っています$.each

すべての要素を反復したくない場合は、ネイティブの forEach または単純なループを使用するのが最善です。

 setCellValue: function(skillID,emplSkillLevel){ 
       for (var index1=0; index1<emplSkillLevel.length; index1++) {
           var item1 = emplSkillLevel[index1];
           var emplSkillLevelID = emplSkillLevel[index1].split("-");
           if(emplSkillLevelID[0] == skillID){
               return emplSkillLevelID[1];
           }
       }
       return 0;
   }

編集: Yotam が言及したように return false を使用できることを忘れていました。彼の答えも良いです。

于 2013-07-01T10:16:05.990 に答える
0

ここで他の人が提供した回答も役立つはずです。これは私の見解ですが、いくつかの変更を加える必要があります。

var setCellValue =  function(skillID, emplSkillLevels){ 
    var cellVal = 'None';

    $.each(emplSkillLevels, function(index, item) {
        var arrSkillLevel = emplSkillLevels[index].split("-");

        if(arrSkillLevel[0] == skillID){
          cellVal = arrSkillLevel[1];

          return false;
        }
    });

    return cellVal;
}

var emplSkillLevels = ["1-Basic", "2-Intermediate", "3-Advanced"];

console.log(setCellValue(2, emplSkillLevels));
于 2013-07-01T10:51:15.883 に答える
0

You can not return value from $.each. You need global variable to store founded value. How to break How to break/exit from a each() function in JQuery?

于 2013-07-01T10:16:29.883 に答える