我使用Array map()
方法检查数组中的每个元素,如果if clausel中的条件为true,则调用另一个函数。
$.map(data['icd'], function (field, i) {
if(field.nummer == search){
Diagnose.single(field.id);
};
});
现在我的问题是,如果元素满足if条件,我想停止map
方法。因为我注意到当我有6个满足条件的元素时,函数Diagnose.single(field.id);
被调用6次而不是一次!
我试过了:
$.map(data['icd'], function (field, i) {
if(field.nummer == search){
Diagnose.single(field.id);
return true;
};
});
但这没有用!我该怎么做?感谢
答案 0 :(得分:4)
使用带有break语句的简单for循环:
for (var i = 0; i < data['icd'].length; i++) {
if (data['icd'][i].nummer == search){
Diagnose.single(data['icd'][i].id);
break;
};
}
map
用于不同的任务。
答案 1 :(得分:4)
如果您不需要IE8支持,可以使用Array.prototype.some
data['icd'].some(function (field, i) {
if(field.nummer == search){
Diagnose.single(field.id);
return true;
};
});
答案 2 :(得分:1)
返回false并将.map替换为.each
$.each(data['icd'], function (field, i) {
if(field.nummer == search){
Diagnose.single(field.id);
// Need to return false, return true will go for a success and still continue.
return false;
};
});
答案 3 :(得分:1)
我认为在你的情况下你想使用jQuery each function。然后,您可以return false
打破循环
$.each(data['icd'], function (field, i) {
if(field.nummer == search){
Diagnose.single(field.id);
return false;
};
});
甚至更好,使用简单的for循环作为@disq共享。