Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript return true实际上返回未定义的值_Javascript - Fatal编程技术网

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()方法测试数组中是否至少有一个元素通过了所提供函数实现的测试


    • 您没有返回值

      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()方法测试数组中是否至少有一个元素通过了所提供函数实现的测试

      使用array.some方法

      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,它只是中断当前迭代。澄清了这一点。