return 来自函数的 TRUE 或 FALSE
return TRUE or FALSE from a function
这里我有一个函数。它接受一个对象数组,并使用 forEach 方法迭代特定的 value.The 数组,以确保提供的值已经存在于 [=16] 中的任何对象中=] 发现它 returns FALSE,或者它应该 return true.But 尽管它 returns FALSE,其余代码也得到执行结果 return将所有 time.How 设为 TRUE 我只能 return 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()
.
来实现相同的目的
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);
}
并且由于使用 some
只是一个单行,您实际上不需要为它创建一个助手,例如(来自 MDN):
console.log([2, 5, 8, 1, 4].some(elem => elem > 10)); // false
console.log([12, 5, 8, 1, 4].some(elem => elem > 10)); // 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){
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;
}
这里我有一个函数。它接受一个对象数组,并使用 forEach 方法迭代特定的 value.The 数组,以确保提供的值已经存在于 [=16] 中的任何对象中=] 发现它 returns FALSE,或者它应该 return true.But 尽管它 returns FALSE,其余代码也得到执行结果 return将所有 time.How 设为 TRUE 我只能 return 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()
.
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);
}
并且由于使用 some
只是一个单行,您实际上不需要为它创建一个助手,例如(来自 MDN):
console.log([2, 5, 8, 1, 4].some(elem => elem > 10)); // false
console.log([12, 5, 8, 1, 4].some(elem => elem > 10)); // 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){
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;
}