Javascript return true实际上返回未定义的值
这是我的密码。 我真的不知道我做错了什么Javascript return true实际上返回未定义的值,javascript,Javascript,这是我的密码。 我真的不知道我做错了什么 var arr = [{ order_count: 1, order_date: "2015-10-10" }, { order_count: 2, order_date: "2017-03-01" }, { order_count: 3, order_date: '2017-04-10' }]; function checkDay (date, maxDays){ var flag = false;
var arr = [{
order_count: 1,
order_date: "2015-10-10"
}, {
order_count: 2,
order_date: "2017-03-01"
}, {
order_count: 3,
order_date: '2017-04-10'
}];
function checkDay (date, maxDays){
var flag = false;
arr.forEach(function(element) {
if (element.order_date === date && element.order_count >= maxDays)
{
flag = true;
return true;
}
});
if (!flag) {
return false;
}
}
console.log(checkDay('2017-04-10', 3));
arr.forEach
中的return true
仅中断forEach
中的当前迭代(将继续执行其他迭代),而不是主函数
改变
if (!flag) {
return false;
}
到
arr.forEach
中的return true
仅中断forEach
中的当前迭代(将继续执行其他迭代),而不是主函数
改变
if (!flag) {
return false;
}
到
您没有返回值
function checkDay (date, maxDays) {
var flag = false;
arr.forEach(function(element) {
if (element.order_date === date && element.order_count >= maxDays) {
flag = true;
}
});
return flag;
}
使用函数的更好方法some
function checkDay (date, maxDays) {
return arr.some((element) => element.order_date === date && element.order_count >= maxDays);
}
资源
- some()方法测试数组中是否至少有一个元素通过了所提供函数实现的测试
- some()方法测试数组中是否至少有一个元素通过了所提供函数实现的测试
- 您没有返回值
function checkDay (date, maxDays) {
var flag = false;
arr.forEach(function(element) {
if (element.order_date === date && element.order_count >= maxDays) {
flag = true;
}
});
return flag;
}
使用函数的更好方法some
function checkDay (date, maxDays) {
return arr.some((element) => element.order_date === date && element.order_count >= maxDays);
}
资源
function checkDay(date, maxDays) {
return arr.some(element => element.order_date === date && element.order_count >= maxDays);
}
这只会循环,直到所有元素都被处理和求值false
,或者在返回true
后完成循环-因此,行为与您预期的完全一样使用数组。一些方法
function checkDay(date, maxDays) {
return arr.some(element => element.order_date === date && element.order_count >= maxDays);
}
这只会循环,直到所有元素都被处理和评估
false
,或者在返回true
后完成循环-因此,行为完全符合您的预期,因为当标志为true时,checkDay
不会返回任何内容。。。只需返回标志。。。哦,而且forEach中的返回true
不会停止forEach。。。也许您想看看数组方法,例如。some
或。对于可以提前终止的循环,您确实应该使用some()而不是forEach(),因为当标志为true时,checkDay
不会返回任何内容。。。只需返回标志
。。。哦,而且forEach中的返回true
不会停止forEach。。。也许你想看看数组方法,比如。一些
或。每个
对于可以提前终止的循环,你真的应该使用一些()而不是forEach()。你的语句不对,除了抛出一个错误之外,没有办法从forEach中断。它不会中断整个forEach,它只是中断当前迭代。澄清了这一点。您的语句不对,除了抛出一个错误之外,无法中断forEach。它不会中断整个forEach,它只是中断当前迭代。澄清了这一点。