我面临着一个困惑,当我从迭代中获得正确的值时,我如何终止循环。我已粘贴下面的代码段。我想要做的是,我有一个名为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;
}
});
}
答案 0 :(得分:4)
要打破jQuery $.each
循环,您需要return false;
而不是break
。当您返回非假值时,这实际上意味着continue;
此外,您无法使用return cellVal;
,之后break;
- 返回已经削减执行。
尝试使用$(emplSkillLevel).each(...)
代替$.each(emplSkillLevel,...)
。
答案 1 :(得分: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,他的答案也很好。
答案 2 :(得分:0)
您无法从$ .each返回值。您需要全局变量来存储创建的值。 如何打破How to break/exit from a each() function in JQuery?
答案 3 :(得分: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));