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


Posted in Javascript onSeptember 30, 2018

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然后程序结束,但输出结果却是这样的:

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

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

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

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

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());

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery.alert 弹出式复选框实现代码
Jun 15 Javascript
jQuery 遍历json数组的实现代码
Sep 22 Javascript
利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
Jul 24 Javascript
jQuery中.live()方法的用法深入解析
Dec 30 Javascript
javascript+canvas制作九宫格小程序
Dec 28 Javascript
javascript之IE版本检测超简单方法
Aug 20 Javascript
JavaScript实现按键精灵的原理分析
Feb 21 Javascript
Javascript实现倒计时时差效果
May 18 Javascript
nginx+vue.js实现前后端分离的示例代码
Feb 12 Javascript
angular动态表单制作
Feb 23 Javascript
vue webpack打包后图片路径错误的完美解决方法
Dec 07 Javascript
详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)
Jul 11 Javascript
angular将html代码输出为内容的实例
Sep 30 #Javascript
详解Vue.js iview实现树形权限表(可扩展表)
Sep 30 #Javascript
对angularJs中$sce服务安全显示html文本的实例
Sep 30 #Javascript
vue  自定义组件实现通讯录功能
Sep 30 #Javascript
对angularJs中2种自定义服务的实例讲解
Sep 30 #Javascript
angularJs在多个控制器中共享服务数据的方法
Sep 30 #Javascript
iview Upload组件多个文件上传的示例代码
Sep 30 #Javascript
You might like
PHP中include()与require()的区别说明
2010/03/10 PHP
PHP学习之数组值的操作
2011/04/17 PHP
解析在PHP中使用全局变量的几种方法
2013/06/24 PHP
关于图片验证码设计的思考
2007/01/29 Javascript
Javascript的一种模块模式
2010/09/08 Javascript
基于Bootstrap3表格插件和分页插件实例详解
2016/05/17 Javascript
javascript实现消灭星星小游戏简单版
2016/11/15 Javascript
js实现炫酷的左右轮播图
2017/01/18 Javascript
vue-自定义组件传值的实例讲解
2018/09/18 Javascript
详解小程序毫秒级倒计时(适用于拼团秒杀功能)
2019/05/05 Javascript
使用JS来动态操作css的几种方法
2019/12/18 Javascript
[41:37]DOTA2北京网鱼队选拔赛——冲击职业之路
2015/04/13 DOTA
[51:06]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第二场 1月26日
2021/03/11 DOTA
Python使用dis模块把Python反编译为字节码的用法详解
2016/06/14 Python
Python使用迭代器捕获Generator返回值的方法
2017/04/05 Python
使用Python+Splinter自动刷新抢12306火车票
2018/01/03 Python
详解Python如何生成词云的方法
2018/06/01 Python
Python中.join()和os.path.join()两个函数的用法详解
2018/06/11 Python
在NumPy中创建空数组/矩阵的方法
2018/06/15 Python
Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例
2018/07/18 Python
详解如何用django实现redirect的几种方法总结
2018/11/22 Python
Python登录系统界面实现详解
2019/06/25 Python
Python3 使用selenium插件爬取苏宁商家联系电话
2019/12/23 Python
解决python中import文件夹下面py文件报错问题
2020/06/01 Python
新手学python应该下哪个版本
2020/06/11 Python
django数据模型中null和blank的区别说明
2020/09/02 Python
python 5个顶级异步框架推荐
2020/09/09 Python
python实现简单遗传算法
2020/09/18 Python
使用HTML5和CSS3制作一个模态框的示例
2018/03/07 HTML / CSS
说一下Linux下有关用户和组管理的命令
2016/01/04 面试题
仓管员岗位职责范文
2013/11/08 职场文书
合同专员岗位职责
2013/12/18 职场文书
机关单位保密工作责任书
2015/05/11 职场文书
债务纠纷代理词
2015/05/25 职场文书
2016年基层党组织创先争优承诺书
2016/03/25 职场文书
十大冰系宝可梦排名,颜值最高的阿罗拉九尾,第三使用率第一
2022/03/18 日漫