使用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 相关文章推荐
js cookies 常见网页木马挂马代码 24小时只加载一次
Apr 13 Javascript
JQuery的ajax获取数据后的处理总结(html,xml,json)
Jul 14 Javascript
JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)
Dec 17 Javascript
js获取上传文件大小示例代码
Apr 10 Javascript
JS替换字符串中字符即替换全部而不是第一个
Jun 04 Javascript
jquery实现鼠标经过显示下划线的渐变下拉菜单效果代码
Aug 24 Javascript
Bootstrap实现响应式导航栏效果
Dec 28 Javascript
利用Vue.js实现checkbox的全选反选效果
Jan 18 Javascript
jQuery滚动监听实现商城楼梯式导航效果
Mar 06 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
Mar 19 jQuery
策略模式实现 Vue 动态表单验证的方法
Sep 16 Javascript
Vue中添加滚动事件设置的方法详解
Sep 14 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
全国FM电台频率大全 - 23 四川省
2020/03/11 无线电
将数字格式的计算结果转为汉字格式
2006/10/09 PHP
php中smarty实现多模版网站的方法
2015/06/11 PHP
php 开发中加密的几种方法总结
2017/03/22 PHP
JavaScript使用cookie
2007/02/02 Javascript
多个表单中如何获得这个文件上传的网址实现js代码
2013/03/25 Javascript
javascript实现信息的显示和隐藏如注册页面
2013/12/03 Javascript
JavaScript中使用sencha gridpanel 编辑单元格、改变单元格颜色
2015/11/26 Javascript
JavaScript SHA512加密算法详细代码
2016/10/06 Javascript
将鼠标焦点定位到文本框最后(代码分享)
2017/01/11 Javascript
js实现自定义路由
2017/02/04 Javascript
浅谈MUI框架中加载外部网页或服务器数据的方法
2018/01/31 Javascript
使用vue制作探探滑动堆叠组件的实例代码
2018/03/07 Javascript
详解AngularJS 过滤器的使用
2018/06/02 Javascript
[02:33]DOTA2亚洲邀请赛趣味视频之吐真话筒
2018/03/31 DOTA
python类参数self使用示例
2014/02/17 Python
Python中for循环控制语句用法实例
2015/06/02 Python
python 筛选数据集中列中value长度大于20的数据集方法
2018/06/14 Python
Python发送邮件测试报告操作实例详解
2018/12/08 Python
深度辨析Python的eval()与exec()的方法
2019/03/26 Python
python 对字典按照value进行排序的方法
2019/05/09 Python
python实现扫雷游戏的示例
2020/10/20 Python
python如何用matplotlib创建三维图表
2021/01/26 Python
html5 offlline 缓存使用示例
2013/06/24 HTML / CSS
世界上最好的威士忌和烈性酒购买网站:The Whisky Exchange
2016/11/20 全球购物
Lulu Guinness露露·吉尼斯官网:红唇包
2019/02/03 全球购物
英国顶级水晶珠宝零售商之一:Tresor Paris
2019/04/27 全球购物
学习心得体会
2014/01/01 职场文书
在宿舍喝酒的检讨书
2014/09/28 职场文书
2014年维修电工工作总结
2014/11/20 职场文书
2014年检验科工作总结
2014/11/22 职场文书
实习介绍信模板
2015/01/30 职场文书
行为习惯主题班会
2015/08/14 职场文书
初中语文教师研修日志
2015/11/13 职场文书
python实战之用emoji表情生成文字
2021/05/08 Python
浅析MongoDB之安全认证
2021/06/26 MongoDB