继承我的代码。 我真的不知道自己做错了什么。
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));
答案 0 :(得分:3)
return true
中的arr.forEach
只会突破forEach
内的当前迭代(其他迭代将继续执行),而不是主函数。
更改
if (!flag) {
return false;
}
到
return flag;
答案 1 :(得分:3)
使用array.some方法
function checkDay(date, maxDays) {
return arr.some(element => element.order_date === date && element.order_count >= maxDays);
}
这只会循环,直到所有元素都被处理和评估false
,或者在返回true
后完成循环 - 所以,行为完全符合您的预期
答案 2 :(得分:0)
您没有返回值
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);
}
Array.prototype.some()
some()方法测试数组中是否至少有一个元素通过了由提供的函数实现的测试。