当前位置: 首页 > 编程笔记 >

使用angularjs.foreach时return的问题解决

澹台举
2023-03-14
本文向大家介绍使用angularjs.foreach时return的问题解决,包括了使用angularjs.foreach时return的问题解决的使用技巧和注意事项,需要的朋友参考一下

AngularJS中当我们需要遍历某个数组的时候,我们会用到forEach语法。AngularJS中forEach的用法如下:

angular.forEach(array,function(obj,index){
doSomething();
})

array表示需要遍历的数组,obj表示遍历时的每个元素,index表示遍历时元素的下标。index不是必须的参数,可以不写。可以根据需要添加与否。

在写一个比较数组对象中是否存在一个对象,存在返回true,失败返回false.在return时,发现并没有退出方法,自己测试了一下.

首先先写一个数组对象,然后用angularjs的forEach方法循环比较,当存在名字为2的对象时,输出true并返回,否则输出false并返回.

self.test = function() {
  var testArray = [{name: 1},{name:2},{name:3}];
  angular.forEach(testArray, function(value, key){
  if (value.name == 2) {console.log(true + ' pass the test');return;}
  console.log(value.name + ' pass');
  });
  console.log(false + ' pass the test');
  return false;
 }();

刚开始认为,当找到value.name == 2的元素时,方法就会直接返回,所以应该只输出1 pass,true pass the test然后程序结束,但输出结果却是这样的:

结果发现在forEach里的return 居然只起到了for循环里的continue作用.

再把forEach循环的返回值和执行函数的返回值打印出来:

forEach函数返回的是循环的数组,函数的返回值是false.说明在forEach里return 并没有奏效,仅仅起到了continue的作用.
去网上搜了一下,并没有原因说明..

解决方案:用一个临时变量存储结果,当条件成立相同时将结果改为true:

self.test = function() {
  var testArray = [{name: 1},{name:2},{name:3}];
  var result = false;
  angular.forEach(testArray, function(value, key){
  if (value.name == 2) {result = true;}
  });
  return result;
 };
 console.log(self.test());

这样虽然能获得正确的返回值,但却无法阻止forEach的循环,想来forEach应该是用在历遍数组元素来做一些操作,像这样的应该用for循环比较好一些.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍python 解决函数返回return的问题,包括了python 解决函数返回return的问题的使用技巧和注意事项,需要的朋友参考一下 定义一个带返回值的函数,需要使用return语句在调用这个函数时返回一个目标值,当没有return时,函数默认返回None。 分析下面两个程序: out: 2017-9-25 out: 2017-9-25 None 对于第一个程序,仅仅调用了'no

  • 我试图使用restTemplate.exchange()方法解析来自服务的JSON响应。但由于解析错误而失败。 Java代码 JSON对象Java类 错误: 2018-07-12 15:40:00.876错误6044--[nio-8080-exec-1]O.A.C.C.C.[.[/].[dispatcherServlet]:路径为[]的上下文中servlet[dispatcherServlet]的

  • 本文向大家介绍详解解决jupyter不能使用pytorch的问题,包括了详解解决jupyter不能使用pytorch的问题的使用技巧和注意事项,需要的朋友参考一下 问题: 昨天在使用jupyter时,发现pytorch又不能用了,之前用了很久的时间安装上,最近一直在用pycharm,转而用jupyter时,发现又开始像之前一样报错,提示:no module named ‘torch'。 尝试各种方

  • 问题内容: 我正在使用python-dateutil从字符串中解析日期: 我期望的是引发异常,但它返回的是当前日期。如果在提供的字符串中找不到日期,有人可以告诉我如何避免获取当前日期吗? 提前致谢。 问题答案: 请参阅dateutil文档,特别是解析函数(强调我的): 此外,可以使用以下关键字参数: 默认值 如果给出,则它必须是日期时间实例。解析日期中缺少的任何字段都将从该实例复制。 默认值为当前

  • 本文向大家介绍解决uploadify使用时session发生丢失问题的方法,包括了解决uploadify使用时session发生丢失问题的方法的使用技巧和注意事项,需要的朋友参考一下 今天在使用uploadify时发现session会发生丢失的情况,经过一番研究发现,其丢失并不是真正的丢失,而是在使用Flash上传控件的时候使用的session机制和asp.net中的不相同。为解决这个问题使用两种

  • 本文向大家介绍python使用matplotlib绘图时图例显示问题的解决,包括了python使用matplotlib绘图时图例显示问题的解决的使用技巧和注意事项,需要的朋友参考一下 前言 matplotlib是基于Python语言的开源项目,旨在为Python提供一个数据绘图包。在使用Python matplotlib库绘制数据图时,需要使用图例标注数据类别,但是传参时,会出现图例解释文字只显示