![](/img/trans.png)
[英]How to read true/false response from server-side script to return true/false to a jQuery function?
[英]return TRUE or FALSE from a function
这里我有一个函数。它接受一个对象数组和一个特定值。使用forEach方法迭代该数组以确保提供的值已经存在于数组中的任何对象中。如果找到,则返回FALSE或应该返回true。但是尽管它返回FALSE,但是其余的代码也被执行了,导致所有时间都返回TRUE。我如何只能返回FALSE / TRUE
if(find_value_in_obj(all_selected,current.value)){
all_selected.push({select_elem:current,value:current.value});
console.log(all_selected);
}else{
alert("you already selected the value");
}
function find_value_in_obj(arr_obj,value){
arr_obj.forEach(function(elem,index,array){
if(elem.value == value){
console.log('found it ');
return false;
}
});
console.log("i am her"); // though value already exists and should returned ,it gets executed results in returning TRUE instead
return true;
}
forEach
不能像常规for
循环那样在其迭代过程中中断。 请改用常规的for
循环。 或者,如果您使用的是ES6,则可以使用.find()
实现相同的.find()
。
function find_value_in_obj(arr_obj,value){
return !!!arr_obj.find(itm => itm == value);
}
正如felix所建议的,您还可以使用Array.prototype.some
。
function find_value_in_obj(arr_obj,value){
return !arr_obj.some(itm => itm == value);
}
您也可以尝试使用更合适,更清洁的过滤器。
if(find_value_in_obj(all_selected,current.value)){
all_selected.push({select_elem:current,value:current.value});
console.log(all_selected);
}else{
alert("you already selected the value");
}
function find_value_in_obj(arr_obj,value){
var resultArray = arr_obj.filter(function(elem,index,array){
return elem.value == value;
});
if(resultArray.length > 0){
return false;
}
console.log("i am her"); // though value already exists and should returned ,it gets executed results in returning TRUE instead
return true;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.