-3

当我从迭代中获得正确的值时,我面临着一个困惑,如何终止循环。我在下面粘贴了一个代码片段。我想要做的是我有一个名为skillID 的字符串和另一个名为emplSkillLevel 的数组。当 SkillID 在循环中匹配时,它会在设置字符串中的值后返回字符串,但在某些点循环不会破坏它。

我怎样才能终止它?

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. 当您返回一个非假值时,这实际上意味着continue;

此外,您不能使用return cellVal;and 之后break;- return 已经削减了执行。

尝试使用$(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

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 回答
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 回答